Exemplo n.º 1
0
        /// <summary>
        /// This event handles processing messages when a message is added to queue (_incomingMessageQueue).
        /// </summary>
        /// <param name="sender">Reference to message queue</param>
        /// <param name="e">Event arguments</param>
        private void IncomingMessageQueue_ProcessItem(object sender, ProcessQueueItemEventArgs <MDSMessage> e)
        {
            //Process only MDSDataTransferMessage objects.
            if (e.ProcessItem.MessageTypeId != MDSMessageFactory.MessageTypeIdMDSDataTransferMessage)
            {
                return;
            }

            //Create IncomingDataMessage from MDSDataTransferMessage
            var dataMessage = new IncomingDataMessage(this, e.ProcessItem as MDSDataTransferMessage);

            try
            {
                //Check if client application registered to MessageReceived event.
                if (MessageReceived == null)
                {
                    dataMessage.Reject("Client application did not registered to MessageReceived event to receive messages.");
                    return;
                }

                //Raise MessageReceived event
                MessageReceived(this, new MessageReceivedEventArgs {
                    Message = dataMessage
                });

                //Check if client application acknowledged or rejected message
                if (dataMessage.AckState != MessageAckStates.WaitingForAck)
                {
                    return;
                }

                //Check if auto acknowledge is active
                if (!AutoAcknowledgeMessages)
                {
                    dataMessage.Reject("Client application did not acknowledged or rejected message.");
                    return;
                }

                //Auto acknowledge message
                dataMessage.Acknowledge();
            }
            catch
            {
                try
                {
                    dataMessage.Reject("An unhandled exception occured during processing message by client application.");
                }
                catch (Exception ex)
                {
                    Logger.Warn(ex.Message, ex);
                }
            }
        }
Exemplo n.º 2
0
            /// <summary>
            /// Sends the message and waits for an incoming message for that message.
            /// MDS can be used for Request/Response type messaging with this method.
            /// </summary>
            /// <param name="timeoutMilliseconds">Timeout to get response message as milliseconds</param>
            /// <returns>Response message</returns>
            public IIncomingMessage SendAndGetResponse(int timeoutMilliseconds)
            {
                var response = _client.SendAndWaitForReply(
                    this,
                    MDSMessageFactory.MessageTypeIdMDSDataTransferMessage,
                    timeoutMilliseconds
                    ) as MDSDataTransferMessage;
                var message = new IncomingDataMessage(_client, response);

                if (_client.AutoAcknowledgeMessages)
                {
                    message.Acknowledge();
                }

                return(message);
            }
Exemplo n.º 3
0
            /// <summary>
            /// Sends the message and waits for an incoming message for that message.
            /// NGRID can be used for Request/Response type messaging with this method.
            /// </summary>
            /// <param name="timeoutMilliseconds">Timeout to get response message as milliseconds</param>
            /// <returns>Response message</returns>
            public IIncomingMessage SendAndGetResponse(int timeoutMilliseconds)
            {
                var response = _client.SendAndWaitForReply(
                                   this,
                                   NGRIDMessageFactory.MessageTypeIdNGRIDDataTransferMessage,
                                   timeoutMilliseconds
                                   ) as NGRIDDataTransferMessage;
                var message = new IncomingDataMessage(_client, response);
                if (_client.AutoAcknowledgeMessages)
                {
                    message.Acknowledge();
                }

                return message;
            }
Exemplo n.º 4
0
        /// <summary>
        /// This event handles processing messages when a message is added to queue (_incomingMessageQueue).
        /// </summary>
        /// <param name="sender">Reference to message queue</param>
        /// <param name="e">Event arguments</param>
        private void IncomingMessageQueue_ProcessItem(object sender, ProcessQueueItemEventArgs<NGRIDMessage> e)
        {
            //Process only NGRIDDataTransferMessage objects.
            if (e.ProcessItem.MessageTypeId != NGRIDMessageFactory.MessageTypeIdNGRIDDataTransferMessage)
            {
                return;
            }

            //Create IncomingDataMessage from NGRIDDataTransferMessage
            var dataMessage = new IncomingDataMessage(this, e.ProcessItem as NGRIDDataTransferMessage);

            try
            {
                //Check if client application registered to MessageReceived event.
                if (MessageReceived == null)
                {
                    dataMessage.Reject("Client application did not registered to MessageReceived event to receive messages.");
                    return;
                }

                //Raise MessageReceived event
                MessageReceived(this, new MessageReceivedEventArgs { Message = dataMessage });

                //Check if client application acknowledged or rejected message
                if (dataMessage.AckState != MessageAckStates.WaitingForAck)
                {
                    return;
                }

                //Check if auto acknowledge is active
                if (!AutoAcknowledgeMessages)
                {
                    dataMessage.Reject("Client application did not acknowledged or rejected message.");
                    return;
                }

                //Auto acknowledge message
                dataMessage.Acknowledge();
            }
            catch
            {
                try
                {
                    dataMessage.Reject("An unhandled exception occured during processing message by client application.");
                }
                catch (Exception ex)
                {
                    Logger.Warn(ex.Message, ex);
                }
            }
        }