Documentation ¶
Overview ¶
Package component contains the methods and structures common to all components.
Index ¶
- type Component
- func (c *Component) AddContextFiller(f fillcontext.Filler)
- func (c *Component) AllowInsecureForCredentials() bool
- func (c *Component) ClaimIDs(ctx context.Context, ids cluster.EntityIdentifiers) 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) FrequencyPlansStore(ctx context.Context) (*frequencyplans.Store, error)
- func (c *Component) FromRequestContext(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 cluster.EntityIdentifiers) (cluster.Peer, error)
- func (c *Component) GetPeerConn(ctx context.Context, role ttnpb.ClusterRole, ids cluster.EntityIdentifiers) (*grpc.ClientConn, error)
- func (c *Component) GetPeers(ctx context.Context, role ttnpb.ClusterRole) ([]cluster.Peer, error)
- func (c *Component) GetTLSClientConfig(ctx context.Context, opts ...tlsconfig.Option) (*tls.Config, error)
- func (c *Component) GetTLSServerConfig(ctx context.Context, opts ...tlsconfig.Option) (*tls.Config, error)
- func (c *Component) HTTPClient(ctx context.Context, opts ...httpclient.Option) (*http.Client, 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) RateLimiter() ratelimit.Interface
- 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(conf *task.Config)
- 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(conf *task.Config)
- func (c *Component) UnclaimIDs(ctx context.Context, ids cluster.EntityIdentifiers) error
- func (c *Component) WithClusterAuth() grpc.CallOption
- type Config
- type ConfigurationServer
- func (c *ConfigurationServer) GetPhyVersions(ctx context.Context, req *ttnpb.GetPhyVersionsRequest) (*ttnpb.GetPhyVersionsResponse, error)
- 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
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Component ¶
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) FrequencyPlansStore ¶ added in v3.17.0
FrequencyPlansStore returns the component's frequencyPlans Store
func (*Component) FromRequestContext ¶ added in v3.10.1
FromRequestContext returns a derived context from the component context with key values from the request context. This can be used to decouple the lifetime from the request context while keeping security information.
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 cluster.EntityIdentifiers) (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 cluster.EntityIdentifiers) (*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 ...tlsconfig.Option) (*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 ...tlsconfig.Option) (*tls.Config, error)
GetTLSServerConfig gets the component's server TLS config and applies the given options.
func (*Component) HTTPClient ¶ added in v3.12.0
func (c *Component) HTTPClient(ctx context.Context, opts ...httpclient.Option) (*http.Client, error)
HTTPClient returns a new *http.Client with a default timeout and a configured transport.
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) RateLimiter ¶ added in v3.12.0
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 ¶
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) 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) GetPhyVersions ¶ added in v3.15.0
func (c *ConfigurationServer) GetPhyVersions(ctx context.Context, req *ttnpb.GetPhyVersionsRequest) (*ttnpb.GetPhyVersionsResponse, error)
GetPhyVersions implements the Configuration service's GetPhyVersions RPC.
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.
type Listener ¶
type Listener interface { TLS(opts ...tlsconfig.Option) (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.
func WithGRPCLogger ¶ added in v3.12.0
WithGRPCLogger returns an option that overrides the component's gRPC logger.
func WithTaskStarter ¶ added in v3.9.1
WithTaskStarter returns an option that overrides the component's TaskStarter for starting tasks.