@@ -40,10 +40,12 @@ class TDriverConfig::TImpl : public IConnectionsParams {
4040 EDiscoveryMode GetDiscoveryMode () const override { return DiscoveryMode; }
4141 size_t GetMaxQueuedRequests () const override { return MaxQueuedRequests; }
4242 TTcpKeepAliveSettings GetTcpKeepAliveSettings () const override { return TcpKeepAliveSettings; }
43+ bool GetTcpNoDelay () const override { return TcpNoDelay; }
4344 bool GetDrinOnDtors () const override { return DrainOnDtors; }
4445 TBalancingPolicy::TImpl GetBalancingSettings () const override { return BalancingSettings; }
4546 TDuration GetGRpcKeepAliveTimeout () const override { return GRpcKeepAliveTimeout; }
4647 bool GetGRpcKeepAlivePermitWithoutCalls () const override { return GRpcKeepAlivePermitWithoutCalls; }
48+ std::string GetGRpcLoadBalancingPolicy () const override { return GRpcLoadBalancingPolicy; }
4749 TDuration GetSocketIdleTimeout () const override { return SocketIdleTimeout; }
4850 uint64_t GetMemoryQuota () const override { return MemoryQuota; }
4951 uint64_t GetMaxInboundMessageSize () const override { return MaxInboundMessageSize; }
@@ -71,10 +73,12 @@ class TDriverConfig::TImpl : public IConnectionsParams {
7173 TCP_KEEPALIVE_COUNT,
7274 TCP_KEEPALIVE_INTERVAL
7375 };
76+ bool TcpNoDelay = true ;
7477 bool DrainOnDtors = true ;
7578 TBalancingPolicy::TImpl BalancingSettings = TBalancingPolicy::TImpl::UsePreferableLocation(std::nullopt );
7679 TDuration GRpcKeepAliveTimeout = TDuration::Seconds(10 );
7780 bool GRpcKeepAlivePermitWithoutCalls = true ;
81+ std::string GRpcLoadBalancingPolicy = " round_robin" ;
7882 TDuration SocketIdleTimeout = TDuration::Minutes(6 );
7983 uint64_t MemoryQuota = 0 ;
8084 uint64_t MaxInboundMessageSize = 0 ;
@@ -174,6 +178,11 @@ TDriverConfig& TDriverConfig::SetTcpKeepAliveSettings(bool enable, size_t idle,
174178 return *this ;
175179}
176180
181+ TDriverConfig& TDriverConfig::SetTcpNoDelay (bool enable) {
182+ Impl_->TcpNoDelay = enable;
183+ return *this ;
184+ }
185+
177186TDriverConfig& TDriverConfig::SetGrpcMemoryQuota (uint64_t bytes) {
178187 Impl_->MemoryQuota = bytes;
179188 return *this ;
@@ -203,6 +212,11 @@ TDriverConfig& TDriverConfig::SetGRpcKeepAlivePermitWithoutCalls(bool permitWith
203212 return *this ;
204213}
205214
215+ TDriverConfig& TDriverConfig::SetGRpcLoadBalancingPolicy (const std::string& policy) {
216+ Impl_->GRpcLoadBalancingPolicy = policy;
217+ return *this ;
218+ }
219+
206220TDriverConfig& TDriverConfig::SetSocketIdleTimeout (TDuration timeout) {
207221 Impl_->SocketIdleTimeout = timeout;
208222 return *this ;
@@ -285,10 +299,12 @@ TDriverConfig TDriver::GetConfig() const {
285299 Impl_->TcpKeepAliveSettings_ .Count ,
286300 Impl_->TcpKeepAliveSettings_ .Interval
287301 );
302+ config.SetTcpNoDelay (Impl_->TcpNoDelay_ );
288303 config.SetDrainOnDtors (Impl_->DrainOnDtors_ );
289304 config.SetBalancingPolicy (std::make_unique<TBalancingPolicy::TImpl>(Impl_->BalancingSettings_ ));
290305 config.SetGRpcKeepAliveTimeout (std::chrono::duration_cast<std::chrono::microseconds>(Impl_->GRpcKeepAliveTimeout_ ));
291306 config.SetGRpcKeepAlivePermitWithoutCalls (Impl_->GRpcKeepAlivePermitWithoutCalls_ );
307+ config.SetGRpcLoadBalancingPolicy (Impl_->GRpcLoadBalancingPolicy_ );
292308 config.SetSocketIdleTimeout (std::chrono::duration_cast<std::chrono::microseconds>(Impl_->SocketIdleTimeout_ ));
293309 config.SetMaxInboundMessageSize (Impl_->MaxInboundMessageSize_ );
294310 config.SetMaxOutboundMessageSize (Impl_->MaxOutboundMessageSize_ );
0 commit comments