Skip to content

Commit

Permalink
Make use of EventStoreClientSettings.CreateHttpMessageHandler in Chan…
Browse files Browse the repository at this point in the history
…nelFactory
  • Loading branch information
josephcummings committed Jan 23, 2024
1 parent d89a083 commit 4e8ca3a
Showing 1 changed file with 19 additions and 35 deletions.
54 changes: 19 additions & 35 deletions src/EventStore.Client/ChannelFactory.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
using System;
using System.Net;
using EndPoint = System.Net.EndPoint;
using System.Net.Http;
using System.Security.Authentication;
using Grpc.Net.Client;
using Grpc.Net.Client.Web;
using System.Net.Security;
using EndPoint = System.Net.EndPoint;
using TChannel = Grpc.Net.Client.GrpcChannel;

namespace EventStore.Client {
Expand All @@ -19,44 +16,31 @@ public static TChannel CreateChannel(EventStoreClientSettings settings, EndPoint
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
}

return TChannel.ForAddress(
address,
var grpcChannelOptions =
new GrpcChannelOptions {
#if NET
HttpClient = new HttpClient(CreateHandler(), true) {
Timeout = System.Threading.Timeout.InfiniteTimeSpan,
DefaultRequestVersion = new Version(2, 0),
},
#else
HttpHandler = CreateHandler(),
#endif
LoggerFactory = settings.LoggerFactory,
Credentials = settings.ChannelCredentials,
DisposeHttpClient = true,
MaxReceiveMessageSize = MaxReceiveMessageLength
}
);

HttpMessageHandler CreateHandler() {
if (settings.CreateHttpMessageHandler != null) {
return settings.CreateHttpMessageHandler.Invoke();
}
};

var httpMessageHandler = settings.CreateHttpMessageHandler?.Invoke()!;
#if NET
return new SocketsHttpHandler {
KeepAlivePingDelay = settings.ConnectivitySettings.KeepAliveInterval,
KeepAlivePingTimeout = settings.ConnectivitySettings.KeepAliveTimeout,
EnableMultipleHttp2Connections = true
};
grpcChannelOptions.HttpClient = new HttpClient(
httpMessageHandler,
true
) {
Timeout = System.Threading.Timeout.InfiniteTimeSpan,
DefaultRequestVersion = new Version(2, 0),
};
#else
return new WinHttpHandler {
TcpKeepAliveEnabled = true,
TcpKeepAliveTime = settings.ConnectivitySettings.KeepAliveTimeout,
TcpKeepAliveInterval = settings.ConnectivitySettings.KeepAliveInterval,
EnableMultipleHttp2Connections = true,
};
grpcChannelOptions.HttpHandler = httpMessageHandler;
#endif
}

return TChannel.ForAddress(
address,
grpcChannelOptions
);
}
}
}
}

0 comments on commit 4e8ca3a

Please sign in to comment.