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.12
Committed: Thu Jan 18 23:13:36 2001 UTC (23 years, 4 months ago) by tdb
Branch: MAIN
Changes since 1.11: +4 -3 lines
Log Message:
Changes to reflect move of Component, ComponentStartException, and the
ReferenceManager from util to componentmanager.

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2 tdb 1.5 package uk.ac.ukc.iscream.filter;
3 tdb 1.1
4     //---IMPORTS---
5     import uk.ac.ukc.iscream.core.*;
6     import uk.ac.ukc.iscream.filter.*;
7 tdb 1.12 import uk.ac.ukc.iscream.componentmanager.*;
8 tdb 1.1 import java.net.Socket;
9     import java.io.InputStream;
10     import java.io.OutputStream;
11     import java.io.IOException;
12     import java.io.*;
13 ajm 1.9 import uk.ac.ukc.iscream.util.*;
14 tdb 1.1
15     /**
16 ajm 1.10 * This provides Host heartbeat functionality
17 tdb 1.1 *
18 tdb 1.12 * @author $Author: tdb1 $
19     * @version $Id: TCPReaderInit.java,v 1.11 2001/01/12 00:45:25 tdb1 Exp $
20 tdb 1.1 */
21     class TCPReaderInit extends Thread {
22    
23     //---FINAL ATTRIBUTES---
24    
25     /**
26     * The current CVS revision of this class
27     */
28 tdb 1.12 public final String REVISION = "$Revision: 1.11 $";
29 tdb 1.1
30     //---STATIC METHODS---
31    
32     //---CONSTRUCTORS---
33    
34 tdb 1.11 public TCPReaderInit(Socket socket, Queue queue) throws IOException {
35 tdb 1.1 _socket = socket;
36 tdb 1.11 _queue = queue;
37 tdb 1.1 _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
38     _socketOut = new PrintWriter(_socket.getOutputStream());
39 tdb 1.8 _logger.write(toString(), Logger.SYSINIT, "created");
40 tdb 1.1 }
41    
42     //---PUBLIC METHODS---
43    
44     public void run() {
45     try {
46 tdb 1.3 //variables
47     String filelist = "";
48     String lastModified = "";
49     String inBound = "";
50 tdb 1.2
51 tdb 1.3 inBound = _socketIn.readLine();
52     if(!inBound.equals("HEARTBEAT")) {
53     _socketOut.println("ERROR");
54     _socketOut.flush();
55     throw new IOException("protocol error - expecting:HEARTBEAT got:" + inBound);
56     } else {
57     _socketOut.println("OK");
58     _socketOut.flush();
59     }
60    
61     inBound = _socketIn.readLine();
62     if(!inBound.equals("CONFIG")) {
63     _socketOut.println("ERROR");
64     _socketOut.flush();
65     throw new IOException("protocol error - expecting:CONFIG got:" + inBound);
66     } else {
67     _socketOut.println("OK");
68     _socketOut.flush();
69     }
70    
71     inBound = _socketIn.readLine();
72     filelist = inBound;
73     _socketOut.println("OK");
74     _socketOut.flush();
75    
76     inBound = _socketIn.readLine();
77     lastModified = inBound;
78    
79     boolean newConfig = _configManager.isModified(filelist, Long.parseLong(lastModified));
80    
81     if(newConfig) {
82     _socketOut.println("ERROR");
83     }
84     else {
85     _socketOut.println("OK");
86     }
87     _socketOut.flush();
88    
89     inBound = _socketIn.readLine();
90     if(!inBound.equals("ENDHEARTBEAT")) {
91     _socketOut.println("ERROR");
92     _socketOut.flush();
93     throw new IOException("protocol error - expecting:ENDHEARTBEAT got:" + inBound);
94     } else {
95     _socketOut.println("OK");
96     _socketOut.flush();
97     }
98 tdb 1.4
99 tdb 1.6 String date = new Long(System.currentTimeMillis()).toString();
100     String hostname = _socket.getInetAddress().getHostName();
101     String ipadd = _socket.getInetAddress().getHostAddress();
102     String xml = "<packet type=\"heartbeat\" machine_name=\""+hostname+"\" date=\""+date+"\" ip=\""+ipadd+"\"></packet>";
103    
104 tdb 1.11 _queue.add(xml);
105 tdb 1.1
106     } catch (Exception e) {
107 tdb 1.8 _logger.write(toString(), Logger.ERROR, "ERROR: " + e.getMessage());
108 tdb 1.1 }
109    
110     _socketOut.flush();
111     // Disconnect streams & socket
112     try {
113     _socketIn.close();
114     _socketOut.close();
115     _socket.close();
116     } catch (IOException e) {
117 tdb 1.8 _logger.write(toString(), Logger.ERROR, "exception on socket close");
118 tdb 1.1 }
119 tdb 1.8 _logger.write(toString(), Logger.SYSMSG, "finished");
120 tdb 1.1 }
121    
122     /**
123     * Overrides the {@link java.lang.Object#toString() Object.toString()}
124     * method to provide clean logging (every class should have this).
125     *
126 ajm 1.10 * This uses the uk.ac.ukc.iscream.util.NameFormat class
127     * to format the toString()
128     *
129 tdb 1.1 * @return the name of this class and its CVS revision
130     */
131     public String toString() {
132 ajm 1.10 return FormatName.getName(
133     _name,
134     getClass().getName(),
135     REVISION);
136 tdb 1.1 }
137    
138     //---PRIVATE METHODS---
139    
140     //---ACCESSOR/MUTATOR METHODS---
141    
142     //---ATTRIBUTES---
143    
144 ajm 1.10 /**
145     * A reference to the configuration manager
146     */
147 tdb 1.8 ConfigurationManager _configManager = ReferenceManager.getInstance().getCM();
148 ajm 1.10
149     /**
150     * This is the friendly identifier of the
151     * component this class is running in.
152     * eg, a Filter may be called "filter1",
153     * If this class does not have an owning
154     * component, a name from the configuration
155     * can be placed here. This name could also
156     * be changed to null for utility classes.
157     */
158     private String _name = FilterMain.NAME;
159    
160     /**
161     * This holds a reference to the
162     * system logger that is being used.
163     */
164     private Logger _logger = ReferenceManager.getInstance().getLogger();
165    
166     /**
167     * The socket we are talking on
168     */
169 tdb 1.1 Socket _socket;
170 ajm 1.10
171     /**
172     * The input from the socket
173     */
174 tdb 1.1 BufferedReader _socketIn;
175 ajm 1.10
176     /**
177     * The output from the socket
178     */
179 tdb 1.1 PrintWriter _socketOut;
180 ajm 1.10
181     /**
182 tdb 1.11 * A reference to our Queue
183 ajm 1.10 */
184 tdb 1.11 Queue _queue;
185 tdb 1.1 //---STATIC ATTRIBUTES---
186    
187     }