44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package gateway
|
|
|
|
import "time"
|
|
|
|
const defaultWalletBalanceCacheTTL = 120 * time.Second
|
|
const defaultRPCRequestTimeout = 15 * time.Second
|
|
|
|
// CacheSettings holds tunable gateway behaviour.
|
|
type CacheSettings struct {
|
|
WalletBalanceCacheTTLSeconds int `yaml:"wallet_balance_ttl_seconds"`
|
|
RPCRequestTimeoutSeconds int `yaml:"rpc_request_timeout_seconds"`
|
|
}
|
|
|
|
func defaultSettings() CacheSettings {
|
|
return CacheSettings{
|
|
WalletBalanceCacheTTLSeconds: int(defaultWalletBalanceCacheTTL.Seconds()),
|
|
RPCRequestTimeoutSeconds: int(defaultRPCRequestTimeout.Seconds()),
|
|
}
|
|
}
|
|
|
|
func (s CacheSettings) withDefaults() CacheSettings {
|
|
if s.WalletBalanceCacheTTLSeconds <= 0 {
|
|
s.WalletBalanceCacheTTLSeconds = int(defaultWalletBalanceCacheTTL.Seconds())
|
|
}
|
|
if s.RPCRequestTimeoutSeconds <= 0 {
|
|
s.RPCRequestTimeoutSeconds = int(defaultRPCRequestTimeout.Seconds())
|
|
}
|
|
return s
|
|
}
|
|
|
|
func (s CacheSettings) walletBalanceCacheTTL() time.Duration {
|
|
if s.WalletBalanceCacheTTLSeconds <= 0 {
|
|
return defaultWalletBalanceCacheTTL
|
|
}
|
|
return time.Duration(s.WalletBalanceCacheTTLSeconds) * time.Second
|
|
}
|
|
|
|
func (s CacheSettings) rpcTimeout() time.Duration {
|
|
if s.RPCRequestTimeoutSeconds <= 0 {
|
|
return defaultRPCRequestTimeout
|
|
}
|
|
return time.Duration(s.RPCRequestTimeoutSeconds) * time.Second
|
|
}
|