internal bool WriteBytes() {
byte [] bytesToWrite = null;
int bytesToWriteLength = 0;
if (Async) {
WebClient.PostProgressChanged(AsyncOp, Progress);
}
if (FileUpload) {
int bytesRead = 0;
if (InnerBuffer != null) {
bytesRead = ReadStream.Read(InnerBuffer, 0, (int)InnerBuffer.Length);
if (bytesRead <= 0) {
ReadStream.Close();
InnerBuffer = null;
}
}
if (InnerBuffer != null) {
bytesToWriteLength = bytesRead;
bytesToWrite = InnerBuffer;
} else if (Footer != null) {
bytesToWriteLength = Footer.Length;
bytesToWrite = Footer;
Footer = null;
} else {
return true; // completed
}
} else if (InnerBuffer != null) {
bytesToWriteLength = InnerBuffer.Length;
bytesToWrite = InnerBuffer;
InnerBuffer = null;
}
else {
return true; // completed
}
if (Async) {
Progress.BytesSent += bytesToWriteLength;
WriteStream.BeginWrite(bytesToWrite, 0, bytesToWriteLength, new AsyncCallback(UploadBitsWriteCallback), this);
} else {
WriteStream.Write(bytesToWrite, 0, bytesToWriteLength);
}
return false; // not complete
}