-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
area-System.Net.HttpenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additions
Milestone
Description
SocketsHttpConnectionFactory was proposed as part of #1793.
Its original intent was to provide a number of callbacks for users to customize things without understanding all of the ConnectionFactory stuff. However, API review removed all of these callbacks, making this class largely redundant with SocketsConnectionFactory.
The only remaining features it has are:
- it pulls the
HttpRequestMessageout of the property bag for the user. - it turns Nagle off.
We should consider reducing our API surface by doing the following:
- Remove
SocketsHttpConnectionFactory. - Update
SocketsConnectionFactoryto default its sockets with Nagle off.- This may cause some confusion to people expecting the default
Socketbehavior. But, it may be okay to be opinionated here, and most experts end up turning it off anyway.
- This may cause some confusion to people expecting the default
- Update the
DnsEndPointWithPropertiestype to expose anHttpRequestMessageproperty.
Old usage example:
class MyCustomFactory : SocketsHttpConnectionFactory
{
public override ValueTask<Connection> EstablishConnectionAsync(HttpRequestMessage message, EndPoint endPoint, IConnectionProperties properties, CancellationToken cancellationToken)
{
// ...
}
}New usage example:
class MyCustomFactory : SocketsConnectionFactory
{
public override ValueTask<Connection> ConnectAsync(EndPoint endPoint, IConnectionProperties properties, CancellationToken cancellationToken)
{
if(!properties.TryGet(out HttpRequestMessage message)) throw new Exception("Expected HttpRequestMessage property");
// ...
}
}CC @geoffkizer @karelz this came about from a discussion with @stephentoub. I feel we can treat this as low priority, but it is a low-effort way to improve API surface.
Metadata
Metadata
Assignees
Labels
area-System.Net.HttpenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additions