Documentation ¶
Overview ¶
Package component contains the methods and structures common to all components.
Index ¶
- Variables
- type Component
- func (c *Component) AddContextFiller(f fillcontext.Filler)
- func (c *Component) AllowInsecureForCredentials() bool
- func (c *Component) ClaimIDs(ctx context.Context, ids ttnpb.Identifiers) error
- func (c *Component) Close()
- func (c *Component) ClusterAuthStreamHook() hooks.StreamHandlerMiddleware
- func (c *Component) ClusterAuthUnaryHook() hooks.UnaryHandlerMiddleware
- func (c *Component) ClusterTLS() bool
- func (c *Component) Context() context.Context
- func (c *Component) FillContext(ctx context.Context) context.Context
- func (c *Component) GetBaseConfig(ctx context.Context) config.ServiceBase
- func (c *Component) GetPeer(ctx context.Context, role ttnpb.ClusterRole, ids ttnpb.Identifiers) (cluster.Peer, error)
- func (c *Component) GetPeerConn(ctx context.Context, role ttnpb.ClusterRole, ids ttnpb.Identifiers) (*grpc.ClientConn, error)
- func (c *Component) GetPeers(ctx context.Context, role ttnpb.ClusterRole) ([]cluster.Peer, error)
- func (c *Component) GetTLSClientConfig(ctx context.Context, opts ...TLSConfigOption) (*tls.Config, error)
- func (c *Component) GetTLSServerConfig(ctx context.Context, opts ...TLSConfigOption) (*tls.Config, error)
- func (c *Component) ListenTCP(address string) (Listener, error)
- func (c *Component) ListenUDP(address string) (*net.UDPConn, error)
- func (c *Component) LogDebug() bool
- func (c *Component) Logger() log.Stack
- func (c *Component) LoopbackConn() *grpc.ClientConn
- func (c *Component) RegisterGRPC(s rpcserver.Registerer)
- func (c *Component) RegisterInterop(s interop.Registerer)
- func (c *Component) RegisterLivenessCheck(name string, check healthcheck.Check)
- func (c *Component) RegisterReadinessCheck(name string, check healthcheck.Check)
- func (c *Component) RegisterTask(ctx context.Context, id string, fn TaskFunc, restart TaskRestart, ...)
- func (c *Component) RegisterWeb(s web.Registerer)
- func (c *Component) Run() error
- func (c *Component) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (c *Component) Start() (err error)
- func (c *Component) StartTask(ctx context.Context, id string, fn TaskFunc, restart TaskRestart, ...)
- func (c *Component) UnclaimIDs(ctx context.Context, ids ttnpb.Identifiers) error
- func (c *Component) WithClusterAuth() grpc.CallOption
- type Config
- type ConfigurationServer
- func (c *ConfigurationServer) ListFrequencyPlans(ctx context.Context, req *ttnpb.ListFrequencyPlansRequest) (*ttnpb.ListFrequencyPlansResponse, error)
- func (c *ConfigurationServer) RegisterHandlers(s *runtime.ServeMux, conn *grpc.ClientConn)
- func (c *ConfigurationServer) RegisterServices(s *grpc.Server)
- func (c *ConfigurationServer) Roles() []ttnpb.ClusterRole
- type Endpoint
- type Listener
- type Option
- type TLSConfigOption
- type TLSConfigOptionFunc
- type TaskFunc
- type TaskRestart
Constants ¶
This section is empty.
Variables ¶
var TaskBackoffDial = []time.Duration{100 * time.Millisecond, 1 * time.Second, 10 * time.Second}
TaskBackoffDial is a backoff to use for tasks that are dialing services.
Functions ¶
This section is empty.
Types ¶
type Component ¶
type Component struct { FrequencyPlans *frequencyplans.Store KeyVault crypto.KeyVault // contains filtered or unexported fields }
Component is a base component for The Things Network cluster
func MustNew ¶
MustNew calls New and returns a new component or panics on an error. In most cases, you should just use New.
func (*Component) AddContextFiller ¶
func (c *Component) AddContextFiller(f fillcontext.Filler)
AddContextFiller adds the specified filler.
func (*Component) AllowInsecureForCredentials ¶
AllowInsecureForCredentials returns `true` if the component was configured to allow transmission of credentials over insecure transports.
func (*Component) ClaimIDs ¶
ClaimIDs claims the identifiers in the cluster. See package ../cluster for more information.
func (*Component) ClusterAuthStreamHook ¶
func (c *Component) ClusterAuthStreamHook() hooks.StreamHandlerMiddleware
ClusterAuthStreamHook ensuring the caller of an RPC is part of the cluster. If a call can't be identified as coming from the cluster, it will be discarded.
func (*Component) ClusterAuthUnaryHook ¶
func (c *Component) ClusterAuthUnaryHook() hooks.UnaryHandlerMiddleware
ClusterAuthUnaryHook ensuring the caller of an RPC is part of the cluster. If a call can't be identified as coming from the cluster, it will be discarded.
func (*Component) ClusterTLS ¶
ClusterTLS returns whether the cluster uses TLS for cluster connections.
func (*Component) FillContext ¶
FillContext fills the context. This method should only be used for request contexts.
func (*Component) GetBaseConfig ¶
func (c *Component) GetBaseConfig(ctx context.Context) config.ServiceBase
GetBaseConfig gets the base config of the component.
func (*Component) GetPeer ¶
func (c *Component) GetPeer(ctx context.Context, role ttnpb.ClusterRole, ids ttnpb.Identifiers) (cluster.Peer, error)
GetPeer returns a cluster peer with the given role and the given tags. See package ../cluster for more information.
func (*Component) GetPeerConn ¶
func (c *Component) GetPeerConn(ctx context.Context, role ttnpb.ClusterRole, ids ttnpb.Identifiers) (*grpc.ClientConn, error)
GetPeerConn returns a gRPC client connection to the cluster peer. See package ../cluster for more information.
func (*Component) GetPeers ¶
GetPeers returns cluster peers with the given role and the given tags. See package ../cluster for more information.
func (*Component) GetTLSClientConfig ¶
func (c *Component) GetTLSClientConfig(ctx context.Context, opts ...TLSConfigOption) (*tls.Config, error)
GetTLSClientConfig gets the component's client TLS config and applies the given options.
func (*Component) GetTLSServerConfig ¶
func (c *Component) GetTLSServerConfig(ctx context.Context, opts ...TLSConfigOption) (*tls.Config, error)
GetTLSServerConfig gets the component's server TLS config and applies the given options.
func (*Component) ListenTCP ¶
ListenTCP listens on a TCP address and allows for TCP and TLS on the same port.
func (*Component) LoopbackConn ¶
func (c *Component) LoopbackConn() *grpc.ClientConn
LoopbackConn returns the loopback gRPC connection to the component. This conn must *not* be closed.
func (*Component) RegisterGRPC ¶
func (c *Component) RegisterGRPC(s rpcserver.Registerer)
RegisterGRPC registers a gRPC subsystem to the component.
func (*Component) RegisterInterop ¶
func (c *Component) RegisterInterop(s interop.Registerer)
RegisterInterop registers an interop subsystem to the component.
func (*Component) RegisterLivenessCheck ¶
func (c *Component) RegisterLivenessCheck(name string, check healthcheck.Check)
RegisterLivenessCheck registers a liveness check for the component.
func (*Component) RegisterReadinessCheck ¶
func (c *Component) RegisterReadinessCheck(name string, check healthcheck.Check)
RegisterReadinessCheck registers a readiness check for the component.
func (*Component) RegisterTask ¶
func (c *Component) RegisterTask(ctx context.Context, id string, fn TaskFunc, restart TaskRestart, backoff ...time.Duration)
RegisterTask registers a task, optionally with restart policy and backoff, to be started after the component started.
func (*Component) RegisterWeb ¶
func (c *Component) RegisterWeb(s web.Registerer)
RegisterWeb registers a web subsystem to the component.
func (*Component) Run ¶
Run starts the component, and returns when a stop signal has been received by the process.
func (*Component) ServeHTTP ¶
func (c *Component) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP serves an HTTP request. If the Content-Type is application/grpc, the request is routed to gRPC. Otherwise, the request is routed to the default web server.
func (*Component) StartTask ¶
func (c *Component) StartTask(ctx context.Context, id string, fn TaskFunc, restart TaskRestart, jitter float64, backoff ...time.Duration)
StartTask starts the specified task function, optionally with restart policy and backoff.
func (*Component) UnclaimIDs ¶
UnclaimIDs unclaims the identifiers in the cluster. See package ../cluster for more information.
func (*Component) WithClusterAuth ¶
func (c *Component) WithClusterAuth() grpc.CallOption
WithClusterAuth that can be used to identify a component within a cluster.
type Config ¶
type Config struct {
config.ServiceBase `name:",squash" yaml:",inline"`
}
Config is the type of configuration for Components
type ConfigurationServer ¶
type ConfigurationServer struct {
// contains filtered or unexported fields
}
ConfigurationServer implements the Configuration RPC service.
func NewConfigurationServer ¶
func NewConfigurationServer(c *Component) *ConfigurationServer
NewConfigurationServer returns a new ConfigurationServer on top of the given component.
func (*ConfigurationServer) ListFrequencyPlans ¶
func (c *ConfigurationServer) ListFrequencyPlans(ctx context.Context, req *ttnpb.ListFrequencyPlansRequest) (*ttnpb.ListFrequencyPlansResponse, error)
ListFrequencyPlans implements the Configuration service's ListFrequencyPlans RPC.
func (*ConfigurationServer) RegisterHandlers ¶
func (c *ConfigurationServer) RegisterHandlers(s *runtime.ServeMux, conn *grpc.ClientConn)
RegisterHandlers registers the Configuration service handler.
func (*ConfigurationServer) RegisterServices ¶
func (c *ConfigurationServer) RegisterServices(s *grpc.Server)
RegisterServices registers the Configuration service.
func (*ConfigurationServer) Roles ¶
func (c *ConfigurationServer) Roles() []ttnpb.ClusterRole
Roles implements the rpcserver.Registerer interface. It just returns nil.
type Endpoint ¶
type Endpoint interface { Address() string Protocol() string Listen(Listener) (net.Listener, error) }
Endpoint represents an endpoint that can be listened on.
func NewTCPEndpoint ¶
NewTCPEndpoint returns a new TCP endpoint.
func NewTLSEndpoint ¶
func NewTLSEndpoint(address, protocol string, configOpts ...TLSConfigOption) Endpoint
NewTLSEndpoint returns a new TLS endpoint.
type Listener ¶
type Listener interface { TLS(opts ...TLSConfigOption) (net.Listener, error) TCP() (net.Listener, error) Addr() net.Addr Close() error }
Listener that accepts multiple protocols on the same port
type Option ¶
type Option func(*Component)
Option allows extending the component when it is instantiated with New.
func WithBaseConfigGetter ¶
func WithBaseConfigGetter(f func(ctx context.Context) config.ServiceBase) Option
WithBaseConfigGetter returns an option that overrides the component's function for getting the base config. This allows overriding the configuration with information in the context.
func WithClusterNew ¶
func WithClusterNew(f func(ctx context.Context, config *cluster.Config, options ...cluster.Option) (cluster.Cluster, error)) Option
WithClusterNew returns an option that overrides the component's function for setting up the cluster. This allows extending the cluster configuration with custom logic based on information in the context.
type TLSConfigOption ¶
type TLSConfigOption interface {
// contains filtered or unexported methods
}
TLSConfigOption provides customization for TLS configuration.
func WithNextProtos ¶
func WithNextProtos(protos ...string) TLSConfigOption
WithNextProtos appends the given protocols to NextProtos.
func WithTLSCertificates ¶
func WithTLSCertificates(certificates ...tls.Certificate) TLSConfigOption
WithTLSCertificates sets TLS certificates.
func WithTLSClientAuth ¶
func WithTLSClientAuth(auth tls.ClientAuthType, cas *x509.CertPool, verify func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error) TLSConfigOption
WithTLSClientAuth sets TLS client authentication options.
type TLSConfigOptionFunc ¶
TLSConfigOptionFunc is a TLSConfigOption.
type TaskRestart ¶
type TaskRestart int
TaskRestart defines a task's restart policy.
const ( // TaskRestartNever denotes a restart policy that never restarts tasks after success or failure. TaskRestartNever TaskRestart = iota // TaskRestartAlways denotes a restart policy that always restarts tasks, on success and failure. TaskRestartAlways // TaskRestartOnFailure denotes a restart policy that restarts tasks on failure. TaskRestartOnFailure )