Example #1
0
        public static string MessageName(OCRMessageType msgType)
        {
            string msgName = null;

            _ocrMsgTypeMap.TryGetValue(msgType, out msgName);
            return(msgName);
        }
Example #2
0
        public static OCRMessageType MessageType(string msgName)
        {
            OCRMessageType msgType = OCRMessageType.UNRECOGNIZED;

            return(_ocrMsgTypeMap.TryGetValue(msgName,
                                              out msgType)
                      ? msgType
                      : OCRMessageType.UNRECOGNIZED
                   );
        }
Example #3
0
        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
            }
        }
Example #4
0
        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
            }
        }
Example #5
0
        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);
            }
        }