/// <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 } ); }
/// <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; }