ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/filtermanager/HostInit.java
Revision: 1.13
Committed: Tue Dec 12 20:43:21 2000 UTC (23 years, 5 months ago) by ajm
Branch: MAIN
Changes since 1.12: +4 -4 lines
Log Message:
fixed typo

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.filtermanager;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.core.*;
6 import uk.ac.ukc.iscream.filter.*;
7 import uk.ac.ukc.iscream.util.*;
8 import java.net.Socket;
9 import java.io.*;
10
11 /**
12 * Handles setting up a host.
13 * This class provides a host with appropriate configuration
14 * and a reference to a Filter to which it should pass data.
15 *
16 * @author $Author: ajm4 $
17 * @version $Id: HostInit.java,v 1.12 2000/12/12 19:17:02 ajm4 Exp $
18 */
19 class HostInit extends Thread {
20
21 //---FINAL ATTRIBUTES---
22
23 /**
24 * The current CVS revision of this class
25 */
26 public final String REVISION = "$Revision: 1.12 $";
27
28 //---STATIC METHODS---
29
30 //---CONSTRUCTORS---
31
32 public HostInit(Socket socket) throws IOException {
33 _socket = socket;
34 _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
35 _socketOut = new PrintWriter(_socket.getOutputStream());
36 _logger.write(toString(), Logger.SYSINIT, "created");
37 }
38
39 //---PUBLIC METHODS---
40
41 public void run() {
42 try {
43 String inBound = _socketIn.readLine();
44 if (!inBound.equals("STARTCONFIG")) {
45 _socketOut.println("ERROR");
46 _socketOut.flush();
47 throw new IOException("protocol error - expected:STARTCONFIG got:" + inBound);
48 }
49
50 Configuration myConfig = _configManager.getConfiguration("Host." + _socket.getInetAddress().getHostName().toLowerCase());
51 if (myConfig == null) {
52 _socketOut.println("ERROR");
53 throw new IOException("error in host configuration");
54 } else {
55 _socketOut.println("OK");
56 _socketOut.flush();
57
58 // get lastmodified
59 inBound = _socketIn.readLine();
60 if(!inBound.equals("LASTMODIFIED")) {
61 // protocol error
62 _socketOut.println("ERROR");
63 _socketOut.flush();
64 throw new IOException("protocol error - expected:LASTMODIFIED got:" + inBound);
65 }
66 else {
67 // send info
68 _socketOut.println(myConfig.getLastModified());
69 _socketOut.flush();
70 }
71
72 // get config fileList
73 inBound = _socketIn.readLine();
74 if(!inBound.equals("FILELIST")) {
75 // protocol error
76 _socketOut.println("ERROR");
77 _socketOut.flush();
78 throw new IOException("protocol error - expected:FILELIST got:" + inBound);
79 }
80 else {
81 // send info
82 _socketOut.println(myConfig.getFileList());
83 _socketOut.flush();
84 }
85
86 // get properties
87 inBound = _socketIn.readLine();
88 while(!inBound.equals("ENDCONFIG")) {
89
90 // get the property
91 try {
92 String returnedProperty = myConfig.getProperty("Host."+inBound);
93
94 _socketOut.println(returnedProperty);
95 _socketOut.flush();
96
97 } catch (org.omg.CORBA.MARSHAL e) {
98 _socketOut.println("ERROR");
99 _socketOut.flush();
100 }
101 inBound = _socketIn.readLine();
102 }
103 _logger.write(toString(), Logger.SYSMSG, "configured host");
104 _socketOut.println("OK");
105 _socketOut.flush();
106
107 // get filter reference
108 inBound = _socketIn.readLine();
109 if(!inBound.equals("FILTER")) {
110 // protocol error
111 _socketOut.println("ERROR");
112 _socketOut.flush();
113 throw new IOException("protocol error - expected:FILTER got:" + inBound);
114 }
115 else {
116 // send info
117 String parentFilter = myConfig.getProperty("Host.filter");
118 _logger.write(toString(), Logger.DEBUG, " looking for parent - " + parentFilter);
119 Filter filter = FilterHelper.narrow(ReferenceManager.getInstance().getCORBARef("iscream.Filter." + parentFilter));
120 _socketOut.println(filter.getHostName() + ";"
121 + filter.getUDPPort() + ";"
122 + filter.getTCPPort());
123 _socketOut.flush();
124 }
125
126 // confirm that all is ok
127 inBound = _socketIn.readLine();
128 if(!inBound.equals("END")) {
129 // protocol error
130 _socketOut.println("ERROR");
131 _socketOut.flush();
132 throw new IOException("protocol error - expected:END got:" + inBound);
133 }
134 else {
135 // send ok
136 _socketOut.println("OK");
137 _socketOut.flush();
138 }
139
140 }
141
142 } catch (Exception e) {
143 _logger.write(toString(), Logger.ERROR, "ERROR - " + e.getMessage());
144 }
145
146 _socketOut.flush();
147 // Disconnect streams & socket
148 try {
149 _socketIn.close();
150 _socketOut.close();
151 _socket.close();
152 } catch (IOException e) {
153 _logger.write(toString(), Logger.ERROR, "exception on socket close");
154 }
155 _logger.write(toString(), Logger.SYSMSG, "finished");
156 }
157
158 /**
159 * Overrides the {@link java.lang.Object#toString() Object.toString()}
160 * method to provide clean logging (every class should have this).
161 *
162 * This uses the uk.ac.ukc.iscream.util.NameFormat class
163 * to format the toString()
164 *
165 * @return the name of this class and its CVS revision
166 */
167 public String toString() {
168 return FormatName.getName(
169 _name,
170 getClass().getName(),
171 REVISION);
172 }
173
174 //---PRIVATE METHODS---
175
176 //---ACCESSOR/MUTATOR METHODS---
177
178 //---ATTRIBUTES---
179
180 /**
181 * This holds a reference to the
182 * system logger that is being used.
183 */
184 private Logger _logger = ReferenceManager.getInstance().getLogger();
185
186 /**
187 * A reference to the Configuration Manager the system is using
188 */
189 private ConfigurationManager _configManager = ReferenceManager.getInstance().getCM();
190
191 /**
192 * This is the friendly identifier of the
193 * component this class is running in.
194 * eg, a Filter may be called "filter1",
195 * If this class does not have an owning
196 * component, a name from the configuration
197 * can be placed here. This name could also
198 * be changed to null for utility classes.
199 */
200 private String _name = FilterManager.NAME;
201
202 /**
203 * The socket this class uses
204 */
205 private Socket _socket;
206
207 /**
208 * Used for the input stream of this socket
209 */
210 private BufferedReader _socketIn;
211
212 /**
213 * Used for the output stream of this socket
214 */
215 private PrintWriter _socketOut;
216
217 //---STATIC ATTRIBUTES---
218
219 }