bool WriteCore()
{
Fx.Assert(this.writeAsyncEventArgs.Buffer != null || this.writeAsyncEventArgs.ByteBufferList != null, "No buffer(s) set");
try
{
this.writeAsyncEventArgs.UserToken = this;
if (this.transport.WriteAsync(this.writeAsyncEventArgs))
{
// write is pending
return false;
}
else
{
// completed synchronously
Fx.Assert(this.writeAsyncEventArgs.BytesTransfered > 0 || this.writeAsyncEventArgs.Exception != null, "no bytes sent on success");
return this.HandleWriteBufferComplete(this.writeAsyncEventArgs);
}
}
catch (Exception exception)
{
if (Fx.IsFatal(exception))
{
throw;
}
this.writeAsyncEventArgs.Exception = exception;
this.writeAsyncEventArgs.UserToken = this;
return this.HandleWriteBufferComplete(this.writeAsyncEventArgs);
}
}