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(); } }
protected void Debug(string message, params object[] args) { Parent.Debug("AsyncProtocolRequest({0}:{1}): {2}", Parent.ID, ID, string.Format(message, args)); }