System.Net.WebConnectionStream.WriteRequestAsync C# (CSharp) Method

WriteRequestAsync() private method

private WriteRequestAsync ( System.Net.SimpleAsyncResult result ) : bool
result System.Net.SimpleAsyncResult
return bool
		internal bool WriteRequestAsync (SimpleAsyncResult result)
		{
			if (requestWritten)
				return false;

			requestWritten = true;
			if (sendChunked || !allowBuffering || writeBuffer == null)
				return false;

			// Keep the call for a potential side-effect of GetBuffer
			var bytes = writeBuffer.GetBuffer ();
			var length = (int)writeBuffer.Length;
			if (request.ContentLength != -1 && request.ContentLength < length) {
				nextReadCalled = true;
				cnc.Close (true);
				throw new WebException ("Specified Content-Length is less than the number of bytes to write", null,
					WebExceptionStatus.ServerProtocolViolation, null);
			}

			SetHeadersAsync (true, inner => {
				if (inner.GotException) {
					result.SetCompleted (inner.CompletedSynchronously, inner.Exception);
					return;
				}

				if (cnc.Data.StatusCode != 0 && cnc.Data.StatusCode != 100) {
					result.SetCompleted (inner.CompletedSynchronously);
					return;
				}

				if (!initRead) {
					initRead = true;
					WebConnection.InitRead (cnc);
				}

				if (length == 0) {
					complete_request_written = true;
					result.SetCompleted (inner.CompletedSynchronously);
					return;
				}

				cnc.BeginWrite (request, bytes, 0, length, r => {
					try {
						complete_request_written = cnc.EndWrite (request, false, r);
						result.SetCompleted (false);
					} catch (Exception exc) {
						result.SetCompleted (false, exc);
					}
				}, null);
			});

			return true;
		}

Same methods

WebConnectionStream::WriteRequestAsync ( SimpleAsyncCallback callback ) : System.Net.SimpleAsyncResult