/// <summary> Event Notification function. This function is called when non-data events /// occur, E.G. Disconnection reported by the server. /// /// </summary> /// <param name="msg">The message containing the event /// </param> public override void onEvent(UMDSMessage msg) { switch (msg.type) { case UMDSMessage.MSG_TYPE.LOSS: /* * Received when the server detects general MIM loss. */ getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: General loss occurred prior to sequence number " + msg.seqnum); break; case UMDSMessage.MSG_TYPE.DISCONNECT: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: " + msg); break; case UMDSMessage.MSG_TYPE.LOGIN_DENIED: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: " + msg); auth_failed = true; break; case UMDSMessage.MSG_TYPE.SERVER_STOPPED: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: " + msg); auth_failed = true; break; case UMDSMessage.MSG_TYPE.SOURCE_CREATE: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Source Create completed. ID " + msg.srcidx + " Status " + msg.status + "" + msg.status_str); break; case UMDSMessage.MSG_TYPE.RECEIVER_CREATE: createCount++; getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Receiver create completed ID " + msg.srcidx + " Status " + msg.status + "" + msg.status_str); break; case UMDSMessage.MSG_TYPE.SOURCE_DELETE: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Source delete Completed. ID " + msg.srcidx + " Status " + msg.status + "" + msg.status_str); break; case UMDSMessage.MSG_TYPE.RECEIVER_DELETE: closeCount++; getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Receiver delete Completed. ID " + msg.srcidx + " Status " + msg.status + "" + msg.status_str); break; case UMDSMessage.MSG_TYPE.CONNECT: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Client is (re)connected to server. Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.LOGIN_COMPLETE: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Client is Logged in to server. Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.LOGOUT_COMPLETE: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Client has Logged out of server. Status " + msg.status + " " + msg.status_str); break; default: getUMDS().log(LOG_LEVEL.INFO, "umdspersistentreceive Event: Unknown server connection event received " + msg); break; } }
/// <summary> The onResponse method is called by the UMDS client code. Application /// code should be added to handle various events. /// </summary> public override void onResponse(UMDSMessage msg) { if (verbose) { System.Console.Out.WriteLine("onResponse called: type < " + msg.type + " >"); } switch (msg.type) { case UMDSMessage.MSG_TYPE.RESPONSE: if (verbose) { try { /* * // This code block will display the verifiable content in the request from the UMDS response app. * // The UM lbmres app does not provide this text. * // * * System.String res = Encoding.UTF8.GetString( msg.appdata ); * System.Console.Out.WriteLine( "Received Response to request <" + msg.requestID + "> len [" + msg.appdata.Length + "] RES Data <" + res + ">" ); */ System.Console.Out.WriteLine("Received Response to request <" + msg.requestID + "> len [" + msg.appdata.Length + "]"); } catch (System.Exception e) { } } Responses++; break; } }
public override void onRequest(UMDSMessage msg) { if (verbose) { System.Console.Out.WriteLine("Yahoo! Received Request!"); } try { if (msg.response_data != null) { interval_byte_count += msg.response_data.Length; if (verbose) { System.Console.Out.WriteLine("Request len " + msg.response_data.Length); } try { /* * // These code blocks will add verifiable content to the response, * // As long as the corresponding code has been enabled in the umdsrequest app. * // * // Be sure to remove the string req definition below... * // * * System.String req_temp = Encoding.UTF8.GetString( msg.appdata ); * int breakAt = req_temp.IndexOf( ':' ); * System.String req = req_temp.Substring( 0, breakAt ); * System.Console.Out.WriteLine( "Request len [" + msg.appdata.Length + "] REQ Data <" + req + ">" ); */ System.String req = Encoding.UTF8.GetString(msg.appdata); System.String temp = "UMDS RES " + total_rqmsg_count + " - " + req; byte [] dummy_req = System.Text.UTF8Encoding.UTF8.GetBytes(temp); response_msg = new byte[dummy_req.Length + 25]; Array.Copy(dummy_req, 0, response_msg, 0, dummy_req.Length < response_msg.Length ? dummy_req.Length : response_msg.Length); /* * System.String res_temp = Encoding.UTF8.GetString( response_msg ); * breakAt = res_temp.IndexOf( ':' ); * System.String res = res_temp.Substring( 0, breakAt ); * System.Console.Out.WriteLine( "Response len [" + response_msg.Length + "] RES Data <" + res + ">" ); */ } catch (System.Exception e) { } msg.respond(response_msg); } interval_msg_count++; total_rqmsg_count++; } catch (UMDSException e) { //UPGRADE_TODO: The equivalent in .NET for method 'java.lang.Throwable.toString' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'" System.Console.Error.WriteLine("Error sending response " + e); } }
/// <summary> The onEvent method is called by the UMDS client code. Application /// code should be added to handle various events. These events are /// typically errors. /// </summary> public override void onEvent(UMDSMessage msg) { switch (msg.type) { case UMDSMessage.MSG_TYPE.LOSS: /* * Received when the server detects general MIM loss. */ log(LOG_LEVEL.INFO, "AppReceiver.onEvent(): General loss occurred prior to sequence number " + msg.seqnum); break; case UMDSMessage.MSG_TYPE.DISCONNECT: log(LOG_LEVEL.INFO, "AppReceiver Event():" + msg); break; case UMDSMessage.MSG_TYPE.SERVER_DENIED: /* * Received if the server denied creation of the object. The * UMDS client code will unregister this object with the server * upon returning. Applications will need to create a new * receiver object to continue. */ log(LOG_LEVEL.INFO, "AppReceiver.onEvent(): Server denied receiver operation"); break; case UMDSMessage.MSG_TYPE.RECEIVER_CREATE: /* * Received after the server Acknowledges the creation of this receiver. * Also received upon reconnection to the server. */ if (UMDSMessage.MSG_STATUS.CLOSE_PENDING == msg.status) { log(LOG_LEVEL.INFO, "AppReceiver Receiver create with close pending: ID " + msg.srcidx + " Status " + msg.status + " : " + msg.status_str); } else { log(LOG_LEVEL.INFO, "AppReceiver Receiver create completed ID " + msg.srcidx + " Status " + msg.status + " : " + msg.status_str); } break; case UMDSMessage.MSG_TYPE.RECEIVER_DELETE: /* * Received after the server Acknowledges the deletion of this receiver. After * receiving this event, no further messages will be received on this topic. * (Messages may still be received after the call to close() returns, while * the server is still processing the close / delete request.) */ log(LOG_LEVEL.INFO, "AppReceiver.onEvent(): Receiver has been deleted"); break; default: log(LOG_LEVEL.INFO, "AppReceiver.onEvent(): Unknown server connection event received " + msg); break; } }
/// <summary> The onEvent method is called by the UMDS client code. Application /// code should be added to handle various events. These events are /// typically errors. /// </summary> public override void onEvent(UMDSMessage msg) { if (UMDSMessage.MSG_TYPE.REQUEST_CANCELED == msg.type) { if (verbose) { log(LOG_LEVEL.INFO, "Request <" + msg.requestID + "> Timedout."); } RequestsCanceled++; } }
/// <summary> The onMessage method is called by the UMDS client code. Application /// logic should be added within this method for processing each message. /// /// This message is called from the UMDS client thread processing the /// socket. Blocking or complex code in this function can prevent the /// socket from being processed. Ensure that application logic is kept to /// a minimum, and hands off the received message to an application /// thread. /// </summary> public override void onMessage(UMDSMessage msg) { /* Count this message and the number of bytes received */ interval_msg_count++; if (msg.appdata != null) { interval_byte_count += msg.length(); } if (msg.recovered) { total_rxmsg_count++; } /* * If the verbose option was used, dump data about the message. * Assume the message begins with text */ if (verbose) { System.Console.Out.WriteLine(rcvnum + ": Yahoo! Received Data Message of Length " + msg.length() + " Sequence Number " + msg.seqnum + " source " + msg.srcidx + " topic " + msg.topic + " src_session_id " + msg.source_session_id + (msg.recovered?" -RX-":"")); // Find the first 0 byte and create a string with the text if (msg.appdata.Length > 0) { int zero; for (zero = 0; zero < msg.appdata.Length && msg.appdata[zero] != 0; zero++) { ; } char [] appbs = new char[zero]; for (zero = 0; zero < msg.appdata.Length && msg.appdata[zero] != 0; zero++) { appbs[zero] = (char)msg.appdata[zero]; } System.String appstr = new System.String(appbs); System.Console.Out.WriteLine(appstr); } } }
/// <summary> Event Notification function. This function is called when non-data events /// occur, E.G. Disconnection reported by the server. /// /// </summary> /// <param name="msg">The message containing the event /// </param> public override void onEvent(UMDSMessage msg) { switch (msg.type) { case UMDSMessage.MSG_TYPE.LOSS: /* * Received when the server detects loss on this topic. */ getUMDS().log(LOG_LEVEL.WARN, "Message loss occurred sequence number " + msg.seqnum + " srcidx " + msg.srcidx); break; case UMDSMessage.MSG_TYPE.DISCONNECT: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: " + msg); break; case UMDSMessage.MSG_TYPE.LOGIN_DENIED: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: " + msg); auth_failed = true; break; case UMDSMessage.MSG_TYPE.SERVER_STOPPED: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: " + msg); auth_failed = true; break; case UMDSMessage.MSG_TYPE.SOURCE_CREATE: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Source Create completed. ID " + msg.srcidx + " Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.RECEIVER_CREATE: createCount++; getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Receiver create completed ID " + msg.srcidx + " Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.SOURCE_DELETE: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Source delete Completed. ID " + msg.srcidx + " Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.RECEIVER_DELETE: closeCount++; getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Receiver delete Completed. ID " + msg.srcidx + " Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.CONNECT: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Client is (re)connected to server. Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.LOGIN_COMPLETE: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Client is Logged in to server. Status " + msg.status + " " + msg.status_str); break; case UMDSMessage.MSG_TYPE.LOGOUT_COMPLETE: getUMDS().log(LOG_LEVEL.INFO, "UMDSResponse Event: Client has Logged out of server. Status " + msg.status + " " + msg.status_str); break; default: /* * An unknown event. The application developer needs to * determine what the correct behaviour is with respect to their * application in this case. */ getUMDS().log(LOG_LEVEL.WARN, "AppReceiver.onEvent(): Unknown event received " + msg.type); break; } }