go_study/fabric-main/internal/pkg/gateway/config/options.go

52 lines
1.5 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package config
import (
"time"
"github.com/spf13/viper"
)
// GatewayOptions is used to configure the gateway settings.
type Options struct {
// GatewayEnabled is used to enable the gateway service.
Enabled bool
// EndorsementTimeout is used to specify the maximum time to wait for endorsement responses from external peers.
EndorsementTimeout time.Duration
// BroadcastTimeout is used to specify the maximum time to wait for responses from ordering nodes.
BroadcastTimeout time.Duration
// DialTimeout is used to specify the maximum time to wait for connecting to external peers and orderer nodes.
DialTimeout time.Duration
}
var defaultOptions = Options{
Enabled: true,
EndorsementTimeout: 10 * time.Second,
BroadcastTimeout: 10 * time.Second,
DialTimeout: 30 * time.Second,
}
// DefaultOptions gets the default Gateway configuration Options
func GetOptions(v *viper.Viper) Options {
options := defaultOptions
if v.IsSet("peer.gateway.enabled") {
options.Enabled = v.GetBool("peer.gateway.enabled")
}
if v.IsSet("peer.gateway.endorsementTimeout") {
options.EndorsementTimeout = v.GetDuration("peer.gateway.endorsementTimeout")
}
if v.IsSet("peer.gateway.broadcastTimeout") {
options.BroadcastTimeout = v.GetDuration("peer.gateway.broadcastTimeout")
}
if v.IsSet("peer.gateway.dialTimeout") {
options.DialTimeout = v.GetDuration("peer.gateway.dialTimeout")
}
return options
}