Exemple #1
0
        public void Dispose()
        {
            if (Disposed)
            {
                return;
            }

            Disposed = true;

            SendResult?.TrySetCanceled();
            DataStreamResponse?.Dispose();
            DataStream?.Dispose();
            ReceiveWaiter.Set();

            DataStreamResponse = null;
            DataStream         = null;
        }
Exemple #2
0
        public async ReusableTask <int> SendAsync(ByteBuffer buffer, int offset, int count)
        {
            SendResult = new TaskCompletionSource <object> ();

            List <RequestMessage> bundle = DecodeMessages(buffer, offset, count);

            if (bundle.Count > 0)
            {
                RequestMessages.AddRange(bundle);
                // The RequestMessages are always sequential
                RequestMessage start = bundle[0];
                RequestMessage end   = bundle[bundle.Count - 1];
                CreateWebRequests(start, end);
            }
            else
            {
                return(count);
            }

            ReceiveWaiter.Set();
            await SendResult.Task;

            return(count);
        }