Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Error = errs.Class("contact")
Error is the default error class for contact package.
Functions ¶
This section is empty.
Types ¶
type Config ¶ added in v0.22.0
type Config struct { ExternalAddress string `user:"true" help:"the public address of the node, useful for nodes behind NAT" default:""` Timeout time.Duration `help:"timeout for pinging storage nodes" default:"10m0s" testDefault:"1m"` RateLimitInterval time.Duration `help:"the amount of time that should happen between contact attempts usually" releaseDefault:"10m0s" devDefault:"1ns"` RateLimitBurst int `help:"the maximum burst size for the contact rate limit token bucket" releaseDefault:"2" devDefault:"1000"` RateLimitCacheSize int `help:"the number of nodes or addresses to keep token buckets for" default:"1000"` }
Config contains configurable values for contact service.
type Endpoint ¶
type Endpoint struct { pb.DRPCNodeUnimplementedServer // contains filtered or unexported fields }
Endpoint implements the contact service Endpoints.
func NewEndpoint ¶
NewEndpoint returns a new contact service endpoint.
func (*Endpoint) CheckIn ¶
func (endpoint *Endpoint) CheckIn(ctx context.Context, req *pb.CheckInRequest) (_ *pb.CheckInResponse, err error)
CheckIn is periodically called by storage nodes to keep the satellite informed of its existence, address, and operator information. In return, this satellite keeps the node informed of its reachability. When a node checks-in with the satellite, the satellite pings the node back to confirm they can successfully connect.
func (*Endpoint) GetTime ¶ added in v0.30.0
func (endpoint *Endpoint) GetTime(ctx context.Context, req *pb.GetTimeRequest) (_ *pb.GetTimeResponse, err error)
GetTime returns current timestamp.
type RateLimiter ¶ added in v1.29.4
type RateLimiter struct {
// contains filtered or unexported fields
}
RateLimiter allows to prevent multiple events in fixed period of time.
func NewRateLimiter ¶ added in v1.29.4
func NewRateLimiter(interval time.Duration, burst, numLimits int) *RateLimiter
NewRateLimiter is a constructor for RateLimiter.
func (*RateLimiter) IsAllowed ¶ added in v1.29.4
func (rateLimiter *RateLimiter) IsAllowed(key string) bool
IsAllowed indicates if event is allowed to happen.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service is the contact service between storage nodes and satellites. It is responsible for updating general node information like address and capacity. It is also responsible for updating peer identity information for verifying signatures from that node.
architecture: Service
func NewService ¶
func NewService(log *zap.Logger, self *overlay.NodeDossier, overlay *overlay.Service, peerIDs overlay.PeerIdentities, dialer rpc.Dialer, config Config) *Service
NewService creates a new contact service.
func (*Service) Local ¶ added in v0.22.0
func (service *Service) Local() overlay.NodeDossier
Local returns the satellite node dossier.