Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( MaxSendMsgSize = 100 * 1024 * 1024 MaxRecvMsgSize = 100 * 1024 * 1024 DefaultKeepaliveConfig = &KeepaliveConfig{ ClientInterval: time.Duration(1) * time.Minute, ClientTimeout: time.Duration(20) * time.Second, ServerInterval: time.Duration(2) * time.Hour, ServerTimeout: time.Duration(20) * time.Second, ServerMinInterval: time.Duration(1) * time.Minute, } // strong TLS cipher suites DefaultTLSCipherSuites = []uint16{ tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, tls.TLS_RSA_WITH_AES_128_GCM_SHA256, tls.TLS_RSA_WITH_AES_256_GCM_SHA384, } // default connection timeout DefaultConnectionTimeout = 5 * time.Second DefaultHomeDir = "/var/rksync/production" )
Configuration defaults
Functions ¶
func ClientKeepaliveOptions ¶
func ClientKeepaliveOptions(ka *KeepaliveConfig) []grpc.DialOption
ClientKeepaliveOptions returns gRPC keepalive options for clients.
func ServerKeepaliveOptions ¶
func ServerKeepaliveOptions(ka *KeepaliveConfig) []grpc.ServerOption
ServerKeepaliveOptions returns gRPC keepalive options for server.
Types ¶
type Config ¶
type Config struct {
HomeDir string // The service's home directory
Gossip *GossipConfig
Identity *IdentityConfig
Server *ServerConfig
}
Config defines the parameters for rksync
type FileSystem ¶
type FileSystem interface {
// Create creates the named file
Create(chainID string, fmeta FileMeta) (File, error)
// OpenFile opens a file using the given flags and the given mode.
OpenFile(chainID string, fmeta FileMeta, flag int, perm os.FileMode) (File, error)
// Stat returns a FileInfo describing the named file.
Stat(chainID string, fmeta FileMeta) (os.FileInfo, error)
}
FileSystem enables the rksync to communicate with file system.
type GossipConfig ¶
type GossipConfig struct {
FileSystem FileSystem // File system
BootstrapPeers []string // Peers we connect to at startup
PropagateIterations int // Number of times a message is pushed to remote peer
PropagatePeerNum int // Number of peers selected to push message to
Endpoint string // Peer endpoint
MaxPropagationBurstSize int // Max number of messages stored until it triggers a push to remote peers
MaxPropagationBurstLatency time.Duration // Max time between consecutive message pushes
PullInterval time.Duration // Determines frequency of pull phases
PullPeerNum int // Number of peers to pull from
PublishCertPeriod time.Duration // Time from startup certifiates are included in Alive messages
PublishStateInfoInterval time.Duration // Determines frequency of pushing state info messages to peers
RequestStateInfoInterval time.Duration // Determines frequency of pulling state info message from peers
}
GossipConfig is the configuration of the rksync component
type IdentityConfig ¶
type IdentityConfig struct {
ID string // ID of this instance
// contains filtered or unexported fields
}
IdentityConfig defines the identity parameters for peer
func (*IdentityConfig) GetCertificate ¶
func (c *IdentityConfig) GetCertificate() []byte
GetCertificate returns the certificate file associated with the configuration
func (*IdentityConfig) GetIntermediateCAs ¶
func (c *IdentityConfig) GetIntermediateCAs() [][]byte
GetIntermediateCAs returns the intermediate ca certificates associated with the configuration
func (*IdentityConfig) GetKeyStoreDir ¶
func (c *IdentityConfig) GetKeyStoreDir() string
GetKeyStoreDir returns the key store directory
func (*IdentityConfig) GetRootCAs ¶
func (c *IdentityConfig) GetRootCAs() [][]byte
GetRootCAs returns the root ca certificates associated with the configuration
func (*IdentityConfig) MakeFilesAbs ¶
func (c *IdentityConfig) MakeFilesAbs(homedir string) error
MakeFilesAbs makes files absolute relative to 'HomeDir' if not already absolute
type KeepaliveConfig ¶
type KeepaliveConfig struct {
// ClientInterval is the duration after which if the client does not see
// any activity from the server it pings the server to see if it is alive
ClientInterval time.Duration
// ClientTimeout is the duration the client waits for a response
// from the server after sending a ping before closing the connection
ClientTimeout time.Duration
// ServerInterval is the duration after which if the server does not see
// any activity from the client it pings the client to see if it is alive
ServerInterval time.Duration
// ServerTimeout is the duration the server waits for a response
// from the client after sending a ping before closing the connection
ServerTimeout time.Duration
// ServerMinInterval is the minimum permitted time between client pings.
// If clients send pings more frequently, the server will disconnect them
ServerMinInterval time.Duration
}
KeepaliveConfig is used to set the gRPC keepalive settings for both clients and servers
type ServerConfig ¶
type ServerConfig struct {
ConnectionTimeout time.Duration
SecOpts *TLSConfig
KaOpts *KeepaliveConfig
}
ServerConfig defines the parameters for configuring a GRPCServer instance