internal void RequestRead(int size)
        {
            var oldStatus = (AsyncOperationStatus)Interlocked.CompareExchange(ref Status, (int)AsyncOperationStatus.WantRead, (int)AsyncOperationStatus.Running);

            Parent.Debug("RequestRead: {0} {1}", oldStatus, size);
            if (oldStatus == AsyncOperationStatus.Running)
            {
                RequestedSize = size;
            }
            else if (oldStatus == AsyncOperationStatus.WantRead)
            {
                RequestedSize += size;
            }
            else if (oldStatus != AsyncOperationStatus.WantWrite)
            {
                throw new InvalidOperationException();
            }
        }
Esempio n. 2
0
 protected void Debug(string message, params object[] args)
 {
     Parent.Debug("AsyncProtocolRequest({0}:{1}): {2}", Parent.ID, ID, string.Format(message, args));
 }