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 import org.w3c.dom.*; 15 16 20 public class TalkOAMPServer extends AceThread 21 implements com.quikj.application.web.oamp.plugin.FeatureHandlerInterface 22 { 23 24 25 public TalkOAMPServer() throws IOException 26 { 27 super("TalkOAMPServer"); 28 } 29 30 public void dispose() 31 { 32 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 getFeatureName() 49 { 50 return featureName; 51 } 52 53 public boolean init(String feature_name, PluginParameters parameters, ClientParms client_parms) 54 { 55 sparms = parameters; 56 cparms = client_parms; 57 featureName = feature_name; 58 59 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 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 109 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 127 { 128 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 } 246 247 private Hashtable pendingDbOps = new Hashtable(); private PluginParameters sparms; 249 private ClientParms cparms; 250 private String featureName; 251 252 private Monitor monitor; 253 } 254 | Popular Tags |