internal void SetCurlCallbacks( IntPtr easyGCHandle, ReadWriteCallback receiveHeadersCallback, ReadWriteCallback sendCallback, SeekCallback seekCallback, ReadWriteCallback receiveBodyCallback) { if (_callbackHandle == null) { _callbackHandle = new SafeCallbackHandle(); } // Add callback for processing headers Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Header, receiveHeadersCallback, easyGCHandle, ref _callbackHandle); // If we're sending data as part of the request, add callbacks for sending request data if (_requestMessage.Content != null) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Read, sendCallback, easyGCHandle, ref _callbackHandle); Interop.Http.RegisterSeekCallback( _easyHandle, seekCallback, easyGCHandle, ref _callbackHandle); } // If we're expecting any data in response, add a callback for receiving body data if (_requestMessage.Method != HttpMethod.Head) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Write, receiveBodyCallback, easyGCHandle, ref _callbackHandle); } }
internal void SetCurlCallbacks( IntPtr easyGCHandle, ReadWriteCallback receiveHeadersCallback, ReadWriteCallback sendCallback, SeekCallback seekCallback, ReadWriteCallback receiveBodyCallback, DebugCallback debugCallback) { if (_callbackHandle == null) { _callbackHandle = new SafeCallbackHandle(); } // Add callback for processing headers Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Header, receiveHeadersCallback, easyGCHandle, ref _callbackHandle); ThrowOOMIfInvalid(_callbackHandle); // If we're sending data as part of the request and it wasn't already added as // in-memory data, add callbacks for sending request data. if (!_inMemoryPostContent && _requestMessage.Content != null) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Read, sendCallback, easyGCHandle, ref _callbackHandle); Debug.Assert(!_callbackHandle.IsInvalid, $"Should have been allocated (or failed) when originally adding handlers"); Interop.Http.RegisterSeekCallback( _easyHandle, seekCallback, easyGCHandle, ref _callbackHandle); Debug.Assert(!_callbackHandle.IsInvalid, $"Should have been allocated (or failed) when originally adding handlers"); } // If we're expecting any data in response, add a callback for receiving body data if (_requestMessage.Method != HttpMethod.Head) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Write, receiveBodyCallback, easyGCHandle, ref _callbackHandle); Debug.Assert(!_callbackHandle.IsInvalid, $"Should have been allocated (or failed) when originally adding handlers"); } if (NetEventSource.IsEnabled) { SetCurlOption(CURLoption.CURLOPT_VERBOSE, 1L); CURLcode curlResult = Interop.Http.RegisterDebugCallback( _easyHandle, debugCallback, easyGCHandle, ref _callbackHandle); Debug.Assert(!_callbackHandle.IsInvalid, $"Should have been allocated (or failed) when originally adding handlers"); if (curlResult != CURLcode.CURLE_OK) { EventSourceTrace("Failed to register debug callback."); } } }
internal void SetCurlCallbacks( IntPtr easyGCHandle, ReadWriteCallback receiveHeadersCallback, ReadWriteCallback sendCallback, SeekCallback seekCallback, ReadWriteCallback receiveBodyCallback, DebugCallback debugCallback) { if (_callbackHandle == null) { _callbackHandle = new SafeCallbackHandle(); } // Add callback for processing headers Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Header, receiveHeadersCallback, easyGCHandle, ref _callbackHandle); // If we're sending data as part of the request, add callbacks for sending request data if (_requestMessage.Content != null) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Read, sendCallback, easyGCHandle, ref _callbackHandle); Interop.Http.RegisterSeekCallback( _easyHandle, seekCallback, easyGCHandle, ref _callbackHandle); } // If we're expecting any data in response, add a callback for receiving body data if (_requestMessage.Method != HttpMethod.Head) { Interop.Http.RegisterReadWriteCallback( _easyHandle, ReadWriteFunction.Write, receiveBodyCallback, easyGCHandle, ref _callbackHandle); } if (EventSourceTracingEnabled) { SetCurlOption(CURLoption.CURLOPT_VERBOSE, 1L); CURLcode curlResult = Interop.Http.RegisterDebugCallback( _easyHandle, debugCallback, easyGCHandle, ref _callbackHandle); if (curlResult != CURLcode.CURLE_OK) { EventSourceTrace("Failed to register debug callback."); } } }