ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/filter/TCPReaderInit.java
Revision: 1.1
Committed: Mon Nov 27 00:43:26 2000 UTC (23 years, 5 months ago) by tdb
Branch: MAIN
Log Message:
TCPReader - will perform heartbeat functions. This class only listens, it runs
a TCPReaderInit thread to do the actual work.

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4     import uk.ac.ukc.iscream.core.*;
5     import uk.ac.ukc.iscream.filter.*;
6     import java.net.Socket;
7     import java.io.InputStream;
8     import java.io.OutputStream;
9     import java.io.IOException;
10     import java.io.*;
11     import org.omg.CORBA.*;
12     import org.omg.CosNaming.*;
13    
14     /**
15     * <ONE LINE DESCRIPTION>
16     * <DETAILED DESCRIPTION>
17     *
18     * @author $Author$
19     * @version $Id$
20     */
21     class TCPReaderInit extends Thread {
22    
23     //---FINAL ATTRIBUTES---
24    
25     /**
26     * The current CVS revision of this class
27     */
28     public final String REVISION = "$Revision: 1.1 $";
29    
30     //---STATIC METHODS---
31    
32     //---CONSTRUCTORS---
33    
34     public TCPReaderInit(Socket socket, ConfigurationManager configManager, Logger logRef, Filter parent) throws IOException {
35     _configManager = configManager;
36     _logRef = logRef;
37     _socket = socket;
38     _parent = parent;
39     _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
40     _socketOut = new PrintWriter(_socket.getOutputStream());
41     _logRef.write(toString(), Logger.SYSINIT, "created");
42     }
43    
44     //---PUBLIC METHODS---
45    
46     //NEED TO MAJORILY CHANGE THIS BIT !
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(_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     Filter _parent;
189     //---STATIC ATTRIBUTES---
190    
191     }