forked from TrueCloudLab/frostfs-sdk-go
[#84] pool: Allow to pass gRPC dial options
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
parent
19adb4dffa
commit
981d24a493
1 changed files with 16 additions and 0 deletions
16
pool/pool.go
16
pool/pool.go
|
@ -32,6 +32,7 @@ import (
|
||||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// client represents virtual connection to the single FrostFS network endpoint from which Pool is formed.
|
// client represents virtual connection to the single FrostFS network endpoint from which Pool is formed.
|
||||||
|
@ -238,6 +239,7 @@ type wrapperPrm struct {
|
||||||
errorThreshold uint32
|
errorThreshold uint32
|
||||||
responseInfoCallback func(sdkClient.ResponseMetaInfo) error
|
responseInfoCallback func(sdkClient.ResponseMetaInfo) error
|
||||||
poolRequestInfoCallback func(RequestInfo)
|
poolRequestInfoCallback func(RequestInfo)
|
||||||
|
dialOptions []grpc.DialOption
|
||||||
}
|
}
|
||||||
|
|
||||||
// setAddress sets endpoint to connect in FrostFS network.
|
// setAddress sets endpoint to connect in FrostFS network.
|
||||||
|
@ -276,6 +278,11 @@ func (x *wrapperPrm) setResponseInfoCallback(f func(sdkClient.ResponseMetaInfo)
|
||||||
x.responseInfoCallback = f
|
x.responseInfoCallback = f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setGRPCDialOptions sets the gRPC dial options for new gRPC client connection.
|
||||||
|
func (x *wrapperPrm) setGRPCDialOptions(opts []grpc.DialOption) {
|
||||||
|
x.dialOptions = opts
|
||||||
|
}
|
||||||
|
|
||||||
// newWrapper creates a clientWrapper that implements the client interface.
|
// newWrapper creates a clientWrapper that implements the client interface.
|
||||||
func newWrapper(prm wrapperPrm) *clientWrapper {
|
func newWrapper(prm wrapperPrm) *clientWrapper {
|
||||||
var cl sdkClient.Client
|
var cl sdkClient.Client
|
||||||
|
@ -307,6 +314,7 @@ func (c *clientWrapper) dial(ctx context.Context) error {
|
||||||
prmDial.SetServerURI(c.prm.address)
|
prmDial.SetServerURI(c.prm.address)
|
||||||
prmDial.SetTimeout(c.prm.dialTimeout)
|
prmDial.SetTimeout(c.prm.dialTimeout)
|
||||||
prmDial.SetStreamTimeout(c.prm.streamTimeout)
|
prmDial.SetStreamTimeout(c.prm.streamTimeout)
|
||||||
|
prmDial.SetGRPCDialOptions(c.prm.dialOptions...)
|
||||||
|
|
||||||
if err = cl.Dial(ctx, prmDial); err != nil {
|
if err = cl.Dial(ctx, prmDial); err != nil {
|
||||||
c.setUnhealthy()
|
c.setUnhealthy()
|
||||||
|
@ -337,6 +345,7 @@ func (c *clientWrapper) restartIfUnhealthy(ctx context.Context) (healthy, change
|
||||||
prmDial.SetServerURI(c.prm.address)
|
prmDial.SetServerURI(c.prm.address)
|
||||||
prmDial.SetTimeout(c.prm.dialTimeout)
|
prmDial.SetTimeout(c.prm.dialTimeout)
|
||||||
prmDial.SetStreamTimeout(c.prm.streamTimeout)
|
prmDial.SetStreamTimeout(c.prm.streamTimeout)
|
||||||
|
prmDial.SetGRPCDialOptions(c.prm.dialOptions...)
|
||||||
|
|
||||||
if err := cl.Dial(ctx, prmDial); err != nil {
|
if err := cl.Dial(ctx, prmDial); err != nil {
|
||||||
c.setUnhealthy()
|
c.setUnhealthy()
|
||||||
|
@ -1054,6 +1063,7 @@ type InitParameters struct {
|
||||||
errorThreshold uint32
|
errorThreshold uint32
|
||||||
nodeParams []NodeParam
|
nodeParams []NodeParam
|
||||||
requestCallback func(RequestInfo)
|
requestCallback func(RequestInfo)
|
||||||
|
dialOptions []grpc.DialOption
|
||||||
|
|
||||||
clientBuilder clientBuilder
|
clientBuilder clientBuilder
|
||||||
}
|
}
|
||||||
|
@ -1113,6 +1123,11 @@ func (x *InitParameters) AddNode(nodeParam NodeParam) {
|
||||||
x.nodeParams = append(x.nodeParams, nodeParam)
|
x.nodeParams = append(x.nodeParams, nodeParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetGRPCDialOptions sets the gRPC dial options for new gRPC client connection.
|
||||||
|
func (x *InitParameters) SetGRPCDialOptions(opts ...grpc.DialOption) {
|
||||||
|
x.dialOptions = opts
|
||||||
|
}
|
||||||
|
|
||||||
// setClientBuilder sets clientBuilder used for client construction.
|
// setClientBuilder sets clientBuilder used for client construction.
|
||||||
// Wraps setClientBuilderContext without a context.
|
// Wraps setClientBuilderContext without a context.
|
||||||
func (x *InitParameters) setClientBuilder(builder clientBuilder) {
|
func (x *InitParameters) setClientBuilder(builder clientBuilder) {
|
||||||
|
@ -1735,6 +1750,7 @@ func fillDefaultInitParams(params *InitParameters, cache *sessionCache) {
|
||||||
prm.setStreamTimeout(params.nodeStreamTimeout)
|
prm.setStreamTimeout(params.nodeStreamTimeout)
|
||||||
prm.setErrorThreshold(params.errorThreshold)
|
prm.setErrorThreshold(params.errorThreshold)
|
||||||
prm.setPoolRequestCallback(params.requestCallback)
|
prm.setPoolRequestCallback(params.requestCallback)
|
||||||
|
prm.setGRPCDialOptions(params.dialOptions)
|
||||||
prm.setResponseInfoCallback(func(info sdkClient.ResponseMetaInfo) error {
|
prm.setResponseInfoCallback(func(info sdkClient.ResponseMetaInfo) error {
|
||||||
cache.updateEpoch(info.Epoch())
|
cache.updateEpoch(info.Epoch())
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue