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.10
Committed: Thu Nov 30 02:20:05 2000 UTC (23 years, 5 months ago) by tdb
Branch: MAIN
Changes since 1.9: +4 -4 lines
Log Message:
Prepended the configuration request with Host.<name> .

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2 tdb 1.9 package uk.ac.ukc.iscream.filtermanager;
3 tdb 1.1
4     //---IMPORTS---
5     import uk.ac.ukc.iscream.core.*;
6 tdb 1.7 import uk.ac.ukc.iscream.filter.*;
7 tdb 1.1 import java.net.Socket;
8     import java.io.InputStream;
9     import java.io.OutputStream;
10     import java.io.IOException;
11     import java.io.*;
12 tdb 1.7 import org.omg.CORBA.*;
13     import org.omg.CosNaming.*;
14 tdb 1.1
15     /**
16     * <ONE LINE DESCRIPTION>
17     * <DETAILED DESCRIPTION>
18     *
19 tdb 1.10 * @author $Author: tdb1 $
20     * @version $Id: HostInit.java,v 1.9 2000/11/29 19:19:12 tdb1 Exp $
21 tdb 1.1 */
22     class HostInit extends Thread {
23    
24     //---FINAL ATTRIBUTES---
25    
26     /**
27     * The current CVS revision of this class
28     */
29 tdb 1.10 public final String REVISION = "$Revision: 1.9 $";
30 tdb 1.1
31     //---STATIC METHODS---
32    
33     //---CONSTRUCTORS---
34    
35 tdb 1.7 public HostInit(Socket socket, ConfigurationManager configManager, Logger logRef, NamingContextExt ncRef) throws IOException {
36 tdb 1.6 _configManager = configManager;
37 tdb 1.7 _logRef = logRef;
38 tdb 1.1 _socket = socket;
39 tdb 1.7 _ncRef = ncRef;
40 tdb 1.1 _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
41     _socketOut = new PrintWriter(_socket.getOutputStream());
42 tdb 1.7 _logRef.write(toString(), Logger.SYSINIT, "created");
43 tdb 1.1 }
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 tdb 1.7 throw new IOException("protocol error - expected:STARTCONFIG got:" + inBound);
54 tdb 1.1 }
55    
56 ajm 1.8 Configuration myConfig = _configManager.getConfiguration("Host." + _socket.getInetAddress().getHostName().toLowerCase());
57 tdb 1.1 if (myConfig == null) {
58     _socketOut.println("ERROR");
59 tdb 1.7 throw new IOException("error in host configuration");
60 tdb 1.1 } else {
61     _socketOut.println("OK");
62     _socketOut.flush();
63    
64 tdb 1.2 // get lastmodified
65     inBound = _socketIn.readLine();
66 tdb 1.4 if(!inBound.equals("LASTMODIFIED")) {
67     // protocol error
68 tdb 1.2 _socketOut.println("ERROR");
69     _socketOut.flush();
70 tdb 1.7 throw new IOException("protocol error - expected:LASTMODIFIED got:" + inBound);
71 tdb 1.4 }
72     else {
73     // send info
74     _socketOut.println(myConfig.getLastModified());
75     _socketOut.flush();
76 tdb 1.2 }
77    
78 tdb 1.7 // 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 tdb 1.2 // get properties
93 tdb 1.1 inBound = _socketIn.readLine();
94     while(!inBound.equals("ENDCONFIG")) {
95    
96     // get the property
97     try {
98 tdb 1.10 String returnedProperty = myConfig.getProperty("Host."+inBound);
99 tdb 1.1
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 tdb 1.7 _logRef.write(toString(), Logger.SYSMSG, "configured host");
110 tdb 1.1 _socketOut.println("OK");
111     _socketOut.flush();
112 tdb 1.7
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 tdb 1.1 }
148    
149     } catch (Exception e) {
150 tdb 1.7 _logRef.write(toString(), Logger.ERROR, "ERROR: " + e.getMessage());
151 tdb 1.1 }
152    
153     _socketOut.flush();
154     // Disconnect streams & socket
155     try {
156     _socketIn.close();
157     _socketOut.close();
158     _socket.close();
159     } catch (IOException e) {
160 tdb 1.7 _logRef.write(toString(), Logger.ERROR, "exception on socket close");
161 tdb 1.1 }
162 tdb 1.7 _logRef.write(toString(), Logger.SYSMSG, "finished");
163 tdb 1.1 }
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 tdb 1.6 ConfigurationManager _configManager;
184 tdb 1.7 Logger _logRef;
185 tdb 1.1 Socket _socket;
186     BufferedReader _socketIn;
187     PrintWriter _socketOut;
188 tdb 1.7 NamingContextExt _ncRef;
189 tdb 1.1 //---STATIC ATTRIBUTES---
190    
191     }