System.Net.Browser.BrowserHttpWebRequestInternal.OnAsyncDataAvailable C# (CSharp) Method

OnAsyncDataAvailable() private method

private OnAsyncDataAvailable ( IntPtr sender, IntPtr calldata, IntPtr closure ) : void
sender IntPtr
calldata IntPtr
closure IntPtr
return void
		void OnAsyncDataAvailable (IntPtr sender, IntPtr calldata, IntPtr closure)
		{
			IntPtr data = IntPtr.Zero;
			uint length = 0;
			BrowserHttpWebResponse response = async_result.Response as BrowserHttpWebResponse;
			try {
				data = NativeMethods.http_request_write_event_args_get_data (calldata);
				length = NativeMethods.http_request_write_event_args_get_count (calldata);
				bytes_read += length;
				if (progress != null) {
					// if Content-Encoding is gzip (or other compressed) then Content-Length cannot be trusted,
					// if present, since it does not (generally) correspond to the uncompressed length
					long content_length = response.ContentLength;
					bool compressed = (response.IsCompressed || (content_length == 0));
					long total_bytes_to_receive = compressed ? -1 : content_length;
					progress (bytes_read, total_bytes_to_receive);
				}
			} catch (Exception e) {
				async_result.Exception = e;
			}

			try {
				if (data != IntPtr.Zero && length != 0)
					response.Write (data, checked ((int) length));
			} catch (Exception e) {
				async_result.Exception = e;
			}
		}