public void SetNextRequest(byte[] buffer, int offset, int count, AsyncProtocolCallback callback)
 {
     if (this._CompletionStatus != 0)
     {
         throw new InternalException();
     }
     this.Buffer = buffer;
     this.Offset = offset;
     this.Count = count;
     this._Callback = callback;
 }
示例#2
0
 public void SetNextRequest(byte[] buffer, int offset, int count, AsyncProtocolCallback callback)
 {
     if (this._CompletionStatus != 0)
     {
         throw new InternalException();
     }
     this.Buffer    = buffer;
     this.Offset    = offset;
     this.Count     = count;
     this._Callback = callback;
 }
示例#3
0
 //
 //
 public void SetNextRequest(byte[] buffer, int offset, int count, AsyncProtocolCallback callback)
 {
     if (_CompletionStatus != StatusNotStarted)
     {
         throw new InternalException(); // pending op is in progress
     }
     Buffer    = buffer;
     Offset    = offset;
     Count     = count;
     _Callback = callback;
 }
        public void SetNextRequest(byte[] buffer, int offset, int count, AsyncProtocolCallback callback)
        {
            if (_completionStatus != StatusNotStarted)
            {
                throw new InternalException(); // Pending operation is in progress.
            }

            Buffer = buffer;
            Offset = offset;
            Count = count;
            _callback = callback;
        }
示例#5
0
        public void Reset(LazyAsyncResult userAsyncResult)
        {
            if (userAsyncResult == null)
            {
                NetEventSource.Fail(this, "userAsyncResult == null");
            }
            if (userAsyncResult.InternalPeekCompleted)
            {
                NetEventSource.Fail(this, "userAsyncResult is already completed.");
            }
            UserAsyncResult = userAsyncResult;

            _callback = null;
            _completionStatus = 0;
            Result = 0;
            AsyncState = null;
            Buffer = null;
            Offset = 0;
            Count = 0;
#if DEBUG
            _DebugAsyncChain = 0;
#endif
        }
示例#6
0
        public void Reset(LazyAsyncResult userAsyncResult)
        {
            if (userAsyncResult == null)
            {
                NetEventSource.Fail(this, "userAsyncResult == null");
            }
            if (userAsyncResult.InternalPeekCompleted)
            {
                NetEventSource.Fail(this, "userAsyncResult is already completed.");
            }
            UserAsyncResult = userAsyncResult;

            _callback         = null;
            _completionStatus = 0;
            Result            = 0;
            AsyncState        = null;
            Buffer            = null;
            Offset            = 0;
            Count             = 0;
#if DEBUG
            _debugAsyncChain = 0;
#endif
        }
示例#7
0
 internal void SetNextRequest(SplitWritesState splitWritesState, AsyncProtocolCallback callback)
 {
     SplitWritesState = splitWritesState;
     SetNextRequest(null, 0, 0, callback);
 }
示例#8
0
 internal void SetNextRequest(SplitWritesState splitWritesState, AsyncProtocolCallback callback)
 {
     SplitWritesState = splitWritesState;
     SetNextRequest(null, 0, 0,callback);
 }
示例#9
0
        private int EnsureBufferedBytes(int minSize, AsyncProtocolRequest asyncRequest, AsyncProtocolCallback asyncCallback)
        {
            if (_internalBufferCount >= minSize)
            {
                return(minSize);
            }

            int bytesRead;

            if (asyncRequest != null)
            {
                if (TaskToAsyncProtocolRequest(
                        FillBufferAsync(minSize),
                        asyncRequest,
                        asyncCallback,
                        out bytesRead))
                {
                    return(-1);
                }
            }
            else
            {
                bytesRead = FillBuffer(minSize);
            }

            Debug.Assert(bytesRead == 0 || bytesRead == minSize);
            return(bytesRead);
        }
示例#10
0
        // Returns true if pending, false if completed
        private static bool TaskToAsyncProtocolRequest(Task <int> task, AsyncProtocolRequest asyncRequest, AsyncProtocolCallback asyncCallback, out int result)
        {
            // Parameters other than asyncCallback are not used
            asyncRequest.SetNextRequest(null, 0, 0, asyncCallback);

            if (task.IsCompleted)
            {
                CompleteFromCompletedTask(task, asyncRequest);
            }
            else
            {
                task.ContinueWith((t, s) => CompleteFromCompletedTask(t, (AsyncProtocolRequest)s),
                                  asyncRequest,
                                  CancellationToken.None,
                                  TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.DenyChildAttach,
                                  TaskScheduler.Default);
            }

            if (asyncRequest.MustCompleteSynchronously)
            {
                result = asyncRequest.Result;
                return(false);
            }

            result = 0;
            return(true);
        }
 internal void SetNextRequest(System.Net.SplitWritesState splitWritesState, AsyncProtocolCallback callback)
 {
     this.SplitWritesState = splitWritesState;
     base.SetNextRequest(null, 0, 0, callback);
 }
示例#12
0
 internal void SetNextRequest(System.Net.SplitWritesState splitWritesState, AsyncProtocolCallback callback)
 {
     this.SplitWritesState = splitWritesState;
     base.SetNextRequest(null, 0, 0, callback);
 }