Example #1
0
        /// <summary>
        /// Enqueues a message for the given session.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="message">The message.</param>
        public void EnqueueMessage(MessageNetworkSession session, Message message)
        {
            if (null == session || null == message)
            {
                return;
            }

            _messageQueue.Enqueue(new MessageProcessorItem
            {
                Session = session,
                Message = message
            }
                                  );
        }
Example #2
0
        /// <summary>
        /// Handles the message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="session">The session.</param>
        /// <exception cref="MessageHandlerException"></exception>
        public async Task HandleMessageAsync(Message message, MessageNetworkSession session)
        {
            if (_running)
            {
                throw new MessageHandlerException(Resources.ErrorMessageHandlerAlreadyRunning);
            }

            _running = true;

            Authenticate(message as AuthenticatedMessage, session as AuthenticatedNetworkSession);

            Finished   = false;
            _startTime = DateTime.Now;

            await OnHandleMessageAsync(message, session).ConfigureAwait(false);

            _finishTime = DateTime.Now;
            Finished    = true;
        }