Exemple #1
0
        async Task CompleteSingletonPreambleAsync(ServerSingletonPreambleConnectionReader serverSingletonPreambleReader, ISingletonChannelListener singletonChannelListener)
        {
            var         timeoutHelper      = new TimeoutHelper(singletonChannelListener.ReceiveTimeout);
            IConnection upgradedConnection = await serverSingletonPreambleReader.CompletePreambleAsync(singletonChannelListener.ReceiveTimeout);

            ServerSingletonConnectionReader singletonReader = new ServerSingletonConnectionReader(serverSingletonPreambleReader, upgradedConnection, this);

            //singletonReader doesn't have async version of ReceiveRequest, so just call the sync method for now.
            RequestContext requestContext = await singletonReader.ReceiveRequestAsync(timeoutHelper.GetCancellationToken());

            singletonChannelListener.ReceiveRequest(requestContext, serverSingletonPreambleReader.ConnectionDequeuedCallback, true);
        }
            bool HandlePreambleComplete(IAsyncResult result)
            {
                IConnection upgradedConnection = this.serverSingletonPreambleReader.EndCompletePreamble(result);
                ServerSingletonConnectionReader singletonReader = new ServerSingletonConnectionReader(serverSingletonPreambleReader, upgradedConnection, this.demuxer);

                //singletonReader doesn't have async version of ReceiveRequest, so just call the [....] method for now.
                RequestContext requestContext = singletonReader.ReceiveRequest(this.timeoutHelper.RemainingTime());

                singletonChannelListener.ReceiveRequest(requestContext, serverSingletonPreambleReader.ConnectionDequeuedCallback, true);

                return(true);
            }
Exemple #3
0
        private void OnSingletonPreambleKnown(ServerSingletonPreambleConnectionReader serverSingletonPreambleReader)
        {
            lock (this.ThisLock)
            {
                if (this.isDisposed)
                {
                    return;
                }
                this.connectionReaders.Remove(serverSingletonPreambleReader);
            }
            ISingletonChannelListener listener = this.singletonPreambleCallback(serverSingletonPreambleReader);
            TimeoutHelper             helper   = new TimeoutHelper(listener.ReceiveTimeout);
            IConnection    upgradedConnection  = serverSingletonPreambleReader.CompletePreamble(helper.RemainingTime());
            RequestContext requestContext      = new ServerSingletonConnectionReader(serverSingletonPreambleReader, upgradedConnection, this).ReceiveRequest(helper.RemainingTime());

            listener.ReceiveRequest(requestContext, serverSingletonPreambleReader.ConnectionDequeuedCallback, true);
        }