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.9
Committed: Wed Nov 29 19:19:12 2000 UTC (23 years, 5 months ago) by tdb
Branch: MAIN
Changes since 1.8: +4 -3 lines
Log Message:
Made changes to fit into the new package structure.

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 java.net.Socket;
8 import java.io.InputStream;
9 import java.io.OutputStream;
10 import java.io.IOException;
11 import java.io.*;
12 import org.omg.CORBA.*;
13 import org.omg.CosNaming.*;
14
15 /**
16 * <ONE LINE DESCRIPTION>
17 * <DETAILED DESCRIPTION>
18 *
19 * @author $Author: ajm4 $
20 * @version $Id: HostInit.java,v 1.8 2000/11/27 23:09:06 ajm4 Exp $
21 */
22 class HostInit extends Thread {
23
24 //---FINAL ATTRIBUTES---
25
26 /**
27 * The current CVS revision of this class
28 */
29 public final String REVISION = "$Revision: 1.8 $";
30
31 //---STATIC METHODS---
32
33 //---CONSTRUCTORS---
34
35 public HostInit(Socket socket, ConfigurationManager configManager, Logger logRef, NamingContextExt ncRef) throws IOException {
36 _configManager = configManager;
37 _logRef = logRef;
38 _socket = socket;
39 _ncRef = ncRef;
40 _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
41 _socketOut = new PrintWriter(_socket.getOutputStream());
42 _logRef.write(toString(), Logger.SYSINIT, "created");
43 }
44
45 //---PUBLIC METHODS---
46
47 public void run() {
48 try {
49 String inBound = _socketIn.readLine();
50 if (!inBound.equals("STARTCONFIG")) {
51 _socketOut.println("ERROR");
52 _socketOut.flush();
53 throw new IOException("protocol error - expected:STARTCONFIG got:" + inBound);
54 }
55
56 Configuration myConfig = _configManager.getConfiguration("Host." + _socket.getInetAddress().getHostName().toLowerCase());
57 if (myConfig == null) {
58 _socketOut.println("ERROR");
59 throw new IOException("error in host configuration");
60 } else {
61 _socketOut.println("OK");
62 _socketOut.flush();
63
64 // get lastmodified
65 inBound = _socketIn.readLine();
66 if(!inBound.equals("LASTMODIFIED")) {
67 // protocol error
68 _socketOut.println("ERROR");
69 _socketOut.flush();
70 throw new IOException("protocol error - expected:LASTMODIFIED got:" + inBound);
71 }
72 else {
73 // send info
74 _socketOut.println(myConfig.getLastModified());
75 _socketOut.flush();
76 }
77
78 // get config fileList
79 inBound = _socketIn.readLine();
80 if(!inBound.equals("FILELIST")) {
81 // protocol error
82 _socketOut.println("ERROR");
83 _socketOut.flush();
84 throw new IOException("protocol error - expected:FILELIST got:" + inBound);
85 }
86 else {
87 // send info
88 _socketOut.println(myConfig.getFileList());
89 _socketOut.flush();
90 }
91
92 // get properties
93 inBound = _socketIn.readLine();
94 while(!inBound.equals("ENDCONFIG")) {
95
96 // get the property
97 try {
98 String returnedProperty = myConfig.getProperty(inBound);
99
100 _socketOut.println(returnedProperty);
101 _socketOut.flush();
102
103 } catch (org.omg.CORBA.MARSHAL e) {
104 _socketOut.println("ERROR");
105 _socketOut.flush();
106 }
107 inBound = _socketIn.readLine();
108 }
109 _logRef.write(toString(), Logger.SYSMSG, "configured host");
110 _socketOut.println("OK");
111 _socketOut.flush();
112
113 // get filter reference
114 inBound = _socketIn.readLine();
115 if(!inBound.equals("FILTER")) {
116 // protocol error
117 _socketOut.println("ERROR");
118 _socketOut.flush();
119 throw new IOException("protocol error - expected:FILTER got:" + inBound);
120 }
121 else {
122 // send info
123 String parentFilter = myConfig.getProperty("Host.filter");
124 _logRef.write(toString(), Logger.DEBUG, " looking for parent - " + parentFilter);
125 org.omg.CORBA.Object objRef = _ncRef.resolve(_ncRef.to_name("iscream.Filter." + parentFilter));
126 Filter filter = FilterHelper.narrow(objRef);
127 _socketOut.println(filter.getHostName() + ";"
128 + filter.getUDPPort() + ";"
129 + filter.getTCPPort());
130 _socketOut.flush();
131 }
132
133 // confirm that all is ok
134 inBound = _socketIn.readLine();
135 if(!inBound.equals("END")) {
136 // protocol error
137 _socketOut.println("ERROR");
138 _socketOut.flush();
139 throw new IOException("protocol error - expected:END got:" + inBound);
140 }
141 else {
142 // send ok
143 _socketOut.println("OK");
144 _socketOut.flush();
145 }
146
147 }
148
149 } catch (Exception e) {
150 _logRef.write(toString(), Logger.ERROR, "ERROR: " + e.getMessage());
151 }
152
153 _socketOut.flush();
154 // Disconnect streams & socket
155 try {
156 _socketIn.close();
157 _socketOut.close();
158 _socket.close();
159 } catch (IOException e) {
160 _logRef.write(toString(), Logger.ERROR, "exception on socket close");
161 }
162 _logRef.write(toString(), Logger.SYSMSG, "finished");
163 }
164
165 /**
166 * Overrides the {@link java.lang.Object#toString() Object.toString()}
167 * method to provide clean logging (every class should have this).
168 *
169 * @return the name of this class and its CVS revision
170 */
171 public String toString() {
172 return this.getClass().getName() + "{" + _socket.getInetAddress().getHostName()
173 + "}(" + REVISION.substring(11, REVISION.length() - 2) + ")";
174
175 }
176
177 //---PRIVATE METHODS---
178
179 //---ACCESSOR/MUTATOR METHODS---
180
181 //---ATTRIBUTES---
182
183 ConfigurationManager _configManager;
184 Logger _logRef;
185 Socket _socket;
186 BufferedReader _socketIn;
187 PrintWriter _socketOut;
188 NamingContextExt _ncRef;
189 //---STATIC ATTRIBUTES---
190
191 }