public OCRTestServer(IPAddress ipAddress, int port, string ocrMessagePrefix, string testSenderName) { Logger = new MessageLog(); // Set the IPAddress and Port values _ipAddress = ipAddress; _testPort = port; _shutDownTokenSrc = new CancellationTokenSource(); _shutDownToken = _shutDownTokenSrc.Token; _testSenderName = testSenderName; _listenerReady = new AutoResetEvent(false); _rxReady = new AutoResetEvent(false); _msgUtils = new OCRMessageUtils(ocrMessagePrefix, testSenderName ); _isRunning = false; _isConnected = false; }
private void Send(object messageObj) { MemoryStream ms = null; if (messageObj != null) { ms = OCRMessageUtils.writeMessage(messageObj); } if (ms != null) { _ocrMsgStream.Write(ms.ToArray(), 0, ms.ToArray().Length ); } }
public void SendNewEventResponse(object messageObj, string caseID) { // Send an OCR_NEW_EVENT_RESPONSE message Send(OCRMessageUtils .NewEventResponseMessage(((Messages.ocr_new_event .message )messageObj ).body .payload .EventID, ((Messages.ocr_new_event .message )messageObj ).body .payload .LaneID, caseID ) ); }
public OCRMonitor(IPAddress ipAddress, int port, bool connectAsListener, string ocrMessagePrefix, string cargoSenderName) { // Set the IPAddress and Port values _ipAddress = ipAddress; _ocrPort = port; _connectAsListener = connectAsListener; _shutDownTokenSrc = new CancellationTokenSource(); _shutDownToken = _shutDownTokenSrc.Token; _listenerReady = new AutoResetEvent(false); _ocrRxReady = new AutoResetEvent(false); _msgUtils = new OCRMessageUtils(ocrMessagePrefix, cargoSenderName ); _isRunning = false; _isConnected = false; }
private void SendACK(string guid) { Send(OCRMessageUtils.AckMessage(guid)); }
private void OCRMessageRespond(object messageObj, OCRMessageType msgType) { try { string msgName = OCRMessageUtils.MessageName(msgType); switch (msgType) { case OCRMessageType.OCR_MASTER: SendACK(((Messages.ocr_master.message)messageObj).body.guid); // Let event subscribers know we received and ACK'd an OCR_MASTER message. if (NotifyRxOCR_MASTER != null) { NotifyRxOCR_MASTER(messageObj, msgName); } break; case OCRMessageType.OCR_ULD: SendACK(((Messages.ocr_uld.message)messageObj).body.guid); // Let event subscribers know we received and ACK'd an OCR_ULD message. if (NotifyRxOCR_ULD != null) { NotifyRxOCR_ULD(messageObj, msgName); } break; case OCRMessageType.OCR_NEW_EVENT: SendACK(((Messages.ocr_new_event.message)messageObj).body.guid); // Let event subscribers know we received and ACK'd an OCR_NEW_EVENT message. if (NotifyRxOCR_NEW_EVENT != null) { NotifyRxOCR_NEW_EVENT(messageObj, msgName); } break; case OCRMessageType.REGISTER: Send(OCRMessageUtils.RegisteredMessage()); // Let event subscribers know we received and ACK'd a REGISTER message. if (NotifyRxREGISTER != null) { NotifyRxREGISTER(messageObj, msgName); } break; case OCRMessageType.UNREGISTER: Send(OCRMessageUtils.UnregisteredMessage()); // Let event subscribers know we received and ACK'd an UNREGISTER message. if (NotifyRxUNREGISTER != null) { NotifyRxUNREGISTER(messageObj, msgName); } Shutdown(); break; case OCRMessageType.PING: SendACK(((Messages.ocr_ping.message)messageObj).body.guid); // Let event subscribers know we received and ACK'd a PING message. if (NotifyRxPING != null) { NotifyRxPING(messageObj, msgName); } break; case OCRMessageType.ACK: // Received Ack Message, no response necessary // Let event subscribers know we received an ACK message. if (NotifyRxACK != null) { NotifyRxACK(messageObj, msgName); } break; case OCRMessageType.NACK: // Received Nack Message, no response necessary // Let event subscribers know we received an NACK message. if (NotifyRxNACK != null) { NotifyRxNACK(messageObj, msgName); } break; default: // If something is unrecognized or corrupt, // just ignore it per the ICD. break; } } catch (Exception) //XML parser and ProcessMasterMessage will throw in invalid message { // bury any exceptions } }
public void ProcessOCRMessage(string msgString) { string guidString = null; // Don't allow shutdown while still processing a message try { lock (this) { OCRMessageType messageType = OCRMessageUtils .GetMessageInfo(msgString, out guidString ); object ocrMessage = null; switch (messageType) { case OCRMessageType.OCR_MASTER: ocrMessage = new Messages.ocr_master.message(); break; case OCRMessageType.OCR_ULD: ocrMessage = new Messages.ocr_uld.message(); break; case OCRMessageType.OCR_NEW_EVENT: ocrMessage = new Messages.ocr_new_event.message(); break; case OCRMessageType.REGISTER: ocrMessage = new Messages.ocr_register.message(); break; case OCRMessageType.UNREGISTER: ocrMessage = new Messages.ocr_unregister.message(); break; case OCRMessageType.PING: ocrMessage = new Messages.ocr_ping.message(); break; case OCRMessageType.ACK: ocrMessage = new Messages.ocr_ack.message(); break; default: // If something is unrecognized or corrupt, // just ignore it per the ICD break; } OCRMessageRespond(DeserializeToTypedMessage(ocrMessage, msgString), messageType); } } catch (Exception) //XML parser and ProcessMasterMessage will throw in invalid message { // Per the ICD, if something is corrupt or unrecognized, // just NACK it. SendNACK(guidString); } }