KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quikj > application > web > talk > plugin > oamp > TalkOAMPServer


1
2 package com.quikj.application.web.talk.plugin.oamp;
3
4 import com.quikj.server.framework.*;
5 import com.quikj.server.web.*;
6 import com.quikj.application.web.oamp.messaging.*;
7 import com.quikj.application.web.oamp.plugin.*;
8 import com.quikj.application.web.talk.messaging.oamp.*;
9
10 import java.io.*;
11 import java.util.*;
12
13 // JAXP packages
14
import org.w3c.dom.*;
15
16 /**
17  *
18  * @author amit
19  */

20 public class TalkOAMPServer extends AceThread
21 implements com.quikj.application.web.oamp.plugin.FeatureHandlerInterface
22 {
23     
24     /** Creates a new instance of TalkOAMP */
25     public TalkOAMPServer() throws IOException
26     {
27         super("TalkOAMPServer");
28     }
29     
30     public void dispose()
31     {
32         // interrupt the wait (kill this thread)
33
interruptWait(AceSignalMessage.SIGNAL_TERM, "disposed");
34
35         if (monitor != null)
36         {
37             monitor.dispose();
38         }
39                 
40         super.dispose();
41     }
42     
43     public ClientParms getClientParms()
44     {
45         return cparms;
46     }
47     
48     public String JavaDoc getFeatureName()
49     {
50         return featureName;
51     }
52     
53     public boolean init(String JavaDoc feature_name, PluginParameters parameters, ClientParms client_parms)
54     {
55         sparms = parameters;
56         cparms = client_parms;
57         featureName = feature_name;
58       
59         // create the System Monitor
60
try
61         {
62             monitor = new Monitor(featureName);
63         }
64         catch (IOException ex)
65         {
66             AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
67             getName()
68             + "- TalkOAMPServer.init() -- Error creating System Monitor : "
69             + ex.getMessage());
70             
71             return false;
72         }
73                 
74         return true;
75     }
76     
77     public boolean sendEvent(AceMessageInterface message)
78     {
79         return super.sendMessage(message);
80     }
81     
82     public void start()
83     {
84         super.start();
85     }
86     
87     public void run()
88     {
89         monitor.start();
90                 
91         while (true)
92         {
93             AceMessageInterface message = waitMessage();
94             if (message == null)
95             {
96                 // print error message
97
AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
98                 getName()
99                 + "- TalkOAMPServer.run() -- A null message was received while waiting for a message - "
100                 + getErrorMessage());
101                 
102                 break;
103             }
104             
105             if ((message instanceof AceSignalMessage) == true)
106             {
107                 // A signal message is received
108

109                 // print informational message
110
AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.SYSTEM_LOG,
111                 getName()
112                 + " - TalkOAMPServer.run() -- A signal "
113                 + ((AceSignalMessage)message).getSignalId()
114                 + " is received : "
115                 + ((AceSignalMessage)message).getMessage());
116                 break;
117             }
118             else if ((message instanceof OAMPMessageEvent) == true)
119             {
120                 processMessageEvent((OAMPMessageEvent)message);
121             }
122             //else if ((message instanceof EndpointLogoutEvent) == true)
123
//{
124
// processLogoutEvent((EndpointLogoutEvent)message);
125
//}
126
else
127             {
128                 // print error message
129
AceLogger.Instance().log(AceLogger.WARNING, AceLogger.SYSTEM_LOG,
130                 getName()
131                 + "- TalkOAMPServer.run() -- An unexpected event is received : "
132                 + message.messageType());
133             }
134         }
135     }
136        
137     private void processMessageEvent(OAMPMessageEvent message)
138     {
139         if (message.isRequest() == true)
140         {
141             Node node = (Node)message.getElement();
142             OAMPTalkMessageParser parser = new OAMPTalkMessageParser();
143             if (parser.parse(node, true) == false)
144             {
145                 AceLogger.Instance().log(AceLogger.ERROR,
146                 AceLogger.SYSTEM_LOG,
147                 getName()
148                 + "- TalkOAMPServer.processMessageEvent() -- Failure parsing message : "
149                 + parser.getErrorMessage());
150                 
151                 return;
152             }
153             
154             OAMPMessageInterface parsed_msg = parser.getMessage();
155
156             if ((parsed_msg instanceof MonitorFeaturesStartMessage) == true)
157             {
158                 processMonitorFeaturesStart((MonitorFeaturesStartMessage)parsed_msg,
159                 message);
160             }
161             else if ((parsed_msg instanceof MonitorFeaturesStopMessage) == true)
162             {
163                 processMonitorFeaturesStop((MonitorFeaturesStopMessage)parsed_msg,
164                 message);
165             }
166             else if ((parsed_msg instanceof MonitorUsersStartMessage) == true)
167             {
168                 processMonitorUsersStart((MonitorUsersStartMessage)parsed_msg,
169                 message);
170             }
171             else if ((parsed_msg instanceof MonitorUsersStopMessage) == true)
172             {
173                 processMonitorUsersStop((MonitorUsersStopMessage)parsed_msg,
174                 message);
175             }
176             else if ((parsed_msg instanceof MonitorEndPointsStartMessage) == true)
177             {
178                 processMonitorEndPointsStart((MonitorEndPointsStartMessage)parsed_msg,
179                 message);
180             }
181             else if ((parsed_msg instanceof MonitorEndPointsStopMessage) == true)
182             {
183                 processMonitorEndPointsStop((MonitorEndPointsStopMessage)parsed_msg,
184                 message);
185             }
186             else
187             {
188                 AceLogger.Instance().log(AceLogger.ERROR,
189                 AceLogger.SYSTEM_LOG,
190                 getName()
191                 + "- TalkOAMPServer.processMessageEvent() -- Unsupported request message : "
192                 + parsed_msg.messageType());
193                 return;
194             }
195         }
196         else
197         {
198             AceLogger.Instance().log(AceLogger.ERROR,
199             AceLogger.SYSTEM_LOG,
200             getName()
201             + "- TalkOAMPServer.processMessageEvent() -- Response message reception not supported");
202             return;
203         }
204     }
205         
206     private void processMonitorFeaturesStart(MonitorFeaturesStartMessage message,
207     OAMPMessageEvent event)
208     {
209         Monitor.getInstance().addFeatureMonitor(event.getClient());
210     }
211     
212     private void processMonitorFeaturesStop(MonitorFeaturesStopMessage message,
213     OAMPMessageEvent event)
214     {
215         Monitor.getInstance().removeFeatureMonitor(event.getClient());
216     }
217     
218     private void processMonitorUsersStart(MonitorUsersStartMessage message,
219     OAMPMessageEvent event)
220     {
221         Monitor.getInstance().addUserMonitor(event.getClient());
222     }
223     
224     private void processMonitorUsersStop(MonitorUsersStopMessage message,
225     OAMPMessageEvent event)
226     {
227         Monitor.getInstance().removeUserMonitor(event.getClient());
228     }
229     
230     private void processMonitorEndPointsStart(MonitorEndPointsStartMessage message,
231     OAMPMessageEvent event)
232     {
233         Monitor.getInstance().addEndPointMonitor(event.getClient());
234     }
235     
236     private void processMonitorEndPointsStop(MonitorEndPointsStopMessage message,
237     OAMPMessageEvent event)
238     {
239         Monitor.getInstance().removeEndPointMonitor(event.getClient());
240     }
241     
242     private void processLogoutEvent(EndpointLogoutEvent message)
243     {
244         // TODO - call cancelDbOperation
245
}
246             
247     private Hashtable pendingDbOps = new Hashtable(); // key = EndPointInterface, value = DbOperationInterface
248
private PluginParameters sparms;
249     private ClientParms cparms;
250     private String JavaDoc featureName;
251     
252     private Monitor monitor;
253 }
254
Popular Tags