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.2
Committed: Wed Nov 15 00:33:12 2000 UTC (23 years, 6 months ago) by tdb
Branch: MAIN
Changes since 1.1: +12 -2 lines
Log Message:
Added sending of LastModified date/time of Configuration to host (as per the
minutes-20001113b.txt).

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4     import uk.ac.ukc.iscream.core.*;
5     import java.net.Socket;
6     import java.io.InputStream;
7     import java.io.OutputStream;
8     import java.io.IOException;
9     import java.io.*;
10    
11     /**
12     * <ONE LINE DESCRIPTION>
13     * <DETAILED DESCRIPTION>
14     *
15     * @author $Author: tdb1 $
16 tdb 1.2 * @version $Id: HostInit.java,v 1.1 2000/11/13 20:40:40 tdb1 Exp $
17 tdb 1.1 */
18     class HostInit extends Thread {
19    
20     //---FINAL ATTRIBUTES---
21    
22     /**
23     * The current CVS revision of this class
24     */
25 tdb 1.2 public final String REVISION = "$Revision: 1.1 $";
26 tdb 1.1
27     //---STATIC METHODS---
28    
29     //---CONSTRUCTORS---
30    
31     public HostInit(Socket socket, Configurator configurator, Logger logger) throws IOException {
32     _configurator = configurator;
33     _logger = logger;
34     _socket = socket;
35     _socketIn = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
36     _socketOut = new PrintWriter(_socket.getOutputStream());
37     _logger.write(toString(), "created");
38     }
39    
40     //---PUBLIC METHODS---
41    
42     public void run() {
43     try {
44     String inBound = _socketIn.readLine();
45     if (!inBound.equals("STARTCONFIG")) {
46     _socketOut.println("ERROR");
47     _socketOut.flush();
48     throw new IOException("Protocol Error");
49     }
50    
51     Configuration myConfig = _configurator.getConfiguration(_socket.getInetAddress().getHostName().toLowerCase());
52     if (myConfig == null) {
53     _socketOut.println("ERROR");
54     throw new IOException("No Configuration File For Host");
55     } else {
56     _socketOut.println("OK");
57     _socketOut.flush();
58    
59 tdb 1.2 // get lastmodified
60     inBound = _socketIn.readLine();
61     while(!inBound.equals("LASTMODIFIED")) {
62     _socketOut.println("ERROR");
63     _socketOut.flush();
64     }
65     _socketOut.println(myConfig.getLastModified());
66     _socketOut.flush();
67    
68     // get properties
69 tdb 1.1 inBound = _socketIn.readLine();
70     while(!inBound.equals("ENDCONFIG")) {
71    
72     // get the property
73     try {
74     String returnedProperty = myConfig.getProperty(inBound);
75    
76     _socketOut.println(returnedProperty);
77     _socketOut.flush();
78    
79     } catch (org.omg.CORBA.MARSHAL e) {
80     _socketOut.println("ERROR");
81     _socketOut.flush();
82     }
83     inBound = _socketIn.readLine();
84     }
85     _logger.write(toString(), "configured host");
86     _socketOut.println("OK");
87     _socketOut.flush();
88     }
89    
90     } catch (Exception e) {
91     _logger.write(toString(), e.toString());
92     }
93    
94     _socketOut.flush();
95     // Disconnect streams & socket
96     try {
97     _socketIn.close();
98     _socketOut.close();
99     _socket.close();
100     } catch (IOException e) {
101     _logger.write(toString(), "exception on socket close");
102     }
103     _logger.write(toString(), "finished");
104     }
105    
106     /**
107     * Overrides the {@link java.lang.Object#toString() Object.toString()}
108     * method to provide clean logging (every class should have this).
109     *
110     * @return the name of this class and its CVS revision
111     */
112     public String toString() {
113     return this.getClass().getName() + "{" + _socket.getInetAddress().getHostName()
114     + "}(" + REVISION.substring(11, REVISION.length() - 2) + ")";
115    
116     }
117    
118     //---PRIVATE METHODS---
119    
120     //---ACCESSOR/MUTATOR METHODS---
121    
122     //---ATTRIBUTES---
123    
124     Configurator _configurator;
125     Logger _logger;
126     Socket _socket;
127     BufferedReader _socketIn;
128     PrintWriter _socketOut;
129    
130     //---STATIC ATTRIBUTES---
131    
132     }