void HandleWriteComplete(TransportAsyncCallbackArgs args, bool syncCompleted)
{
if (this.sendEventArgs.SocketError == SocketError.Success)
{
args.BytesTransfered = this.sendEventArgs.BytesTransferred;
args.Exception = null;
Fx.Assert(args.BytesTransfered == args.Count, "Cannot be partialy completed");
if (this.monitor != null)
{
this.sendEventArgs.ReportWrite(this.monitor);
}
}
else
{
args.Exception = new SocketException((int)this.sendEventArgs.SocketError);
}
args.CompletedSynchronously = syncCompleted;
try
{
this.sendEventArgs.Reset();
}
catch (ObjectDisposedException exception)
{
args.Exception = exception;
}
if (!syncCompleted)
{
args.CompletedCallback(args);
}
}