コード例 #1
0
        public async Task <IMessage> ReceiveMessageAsync(IMessagePipeline messagePipeline, string messageUniqueIdentifier, CancellationToken token)
        {
            var inputStream = new WebSocketInputStream(this.webSocket);
            var message     = await this.messageFactory.CreateMessage(inputStream, messageUniqueIdentifier);

            if (messagePipeline != null)
            {
                await messagePipeline.SendMessageAsync(message);
            }

            return(message);
        }
コード例 #2
0
        /// <summary>
        /// The receive message async.
        /// </summary>
        /// <param name="pipeline"></param>
        /// <param name="cancellationToken">
        /// The cancellation token.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        public async Task <IMessage> ReceiveMessageAsync(IMessagePipeline pipeline, CancellationToken cancellationToken)
        {
            await this.semaphore.WaitAsync(cancellationToken);

            IMessage message;

            // this will only fail if there is a bug in the program
            this.messages.TryDequeue(out message);
            await pipeline.SendMessageAsync(message);

            return(message);
        }
コード例 #3
0
ファイル: Router.cs プロジェクト: ErikRBergman/MiniMQ
        private Task ProcessGet(string messageHandlerName, IMessagePipeline pipeline)
        {
            var messageHandler = this.GetMessageHandler(messageHandlerName);
            var message        = messageHandler.ReceiveMessageOrNull();

            if (message != null)
            {
                return(pipeline.SendMessageAsync(message));
            }

            return(Task.CompletedTask);
        }
コード例 #4
0
        public async Task <IMessage> ReceiveMessageAsync(IMessagePipeline pipeline, CancellationToken cancellationToken)
        {
            await this.WaitForNewMessageAsync(cancellationToken);

            IMessage message;

            this.requestMessages.TryDequeue(out message);

            if (pipeline != null)
            {
                await pipeline.SendMessageAsync(message);
            }

            return(message);
        }