public override void Write (byte [] buffer, int offset, int size)
{
AsyncCallback cb = cb_wrapper;
WebAsyncResult res = (WebAsyncResult) BeginWrite (buffer, offset, size, cb, null);
if (!res.IsCompleted && !res.WaitUntilComplete (WriteTimeout, false)) {
KillBuffer ();
nextReadCalled = true;
cnc.Close (true);
throw new IOException ("Write timed out.");
}
EndWrite (res);
}