Documentation
¶
Index ¶
- Constants
- Variables
- type LifecycleEvent
- type LifecycleListener
- type LifecycleNotifier
- type Router
- func (self *Router) DefaultRequestTimeout() time.Duration
- func (self *Router) GetAlerter() env.Alerter
- func (self *Router) GetChannel(controllerId string) channel.Channel
- func (self *Router) GetCloseNotify() <-chan struct{}
- func (self *Router) GetConfig() *env.Config
- func (self *Router) GetConnectEventsConfig() *env.ConnectEventsConfig
- func (self *Router) GetCtrlChannelBindHandler() channel.BindHandler
- func (self *Router) GetCtrlRateLimiter() rate.AdaptiveRateLimitTracker
- func (self *Router) GetDialHeaders() (channel.Headers, error)
- func (self *Router) GetDialerCfg() map[string]xgress.OptionsData
- func (self *Router) GetForwarder() env.Forwarder
- func (self *Router) GetHeartbeatOptions() env.HeartbeatOptions
- func (self *Router) GetIndexWatchers() env.IndexWatchers
- func (self *Router) GetLinkDialerPool() goroutines.Pool
- func (self *Router) GetMetricsRegistry() metrics.UsageRegistry
- func (self *Router) GetNetworkControllers() env.NetworkControllers
- func (self *Router) GetRateLimiterPool() goroutines.Pool
- func (self *Router) GetRouterDataModel() *common.RouterDataModel
- func (self *Router) GetRouterId() *identity.TokenId
- func (self *Router) GetStateManager() state.Manager
- func (self *Router) GetTraceHandler() *channel.TraceHandler
- func (self *Router) GetVersionInfo() versions.VersionProvider
- func (self *Router) GetXLinkRegistry() xlink.Registry
- func (self *Router) GetXgressBindHandler() xgress.BindHandler
- func (self *Router) GetXgressListeners() []xgress_router.Listener
- func (self *Router) GetXgressMetrics() env.XgressMetrics
- func (self *Router) GetXgressRegistry() *env.Registry
- func (self *Router) GetXlinkDialers() []xlink.Dialer
- func (self *Router) GetXlinkRegistry() xlink.Registry
- func (self *Router) GetXrctrls() []env.Xrctrl
- func (self *Router) HandleAgentAsyncOp(conn net.Conn) error
- func (self *Router) HandleAgentOp(conn net.Conn) error
- func (self *Router) IsRouterDataModelRequired() bool
- func (self *Router) ListenForShutdownSignal(ctx context.Context)
- func (self *Router) MarkRouterDataModelRequired()
- func (self *Router) NotifyCertsUpdated()
- func (self *Router) NotifyOfReconnect(ch ctrlchan.CtrlChannel)
- func (self *Router) RegisterAgentBindHandler(bindHandler channel.BindHandler)
- func (self *Router) RegisterAgentOp(opId byte, f func(c *bufio.ReadWriter) error)
- func (self *Router) RegisterDefaultAgentOps(debugEnabled bool)
- func (self *Router) RegisterXWebHandlerFactory(x xweb.ApiHandlerFactory) error
- func (self *Router) RegisterXrctrl(x env.Xrctrl) error
- func (self *Router) RegisterXweb(x xweb.Instance) error
- func (self *Router) RenderJsonConfig() (string, error)
- func (self *Router) Run() error
- func (self *Router) RunCliAgent(agentAddr, appAlias string)
- func (self *Router) Shutdown() error
- func (self *Router) Start() error
- func (self *Router) UpdateCtrlEndpoints(endpoints []string)
- func (self *Router) UpdateLeader(leaderId string)
- func (self *Router) WithRouterDataModel(f func(*common.RouterDataModel) error) error
- type RouterMonitor
Constants ¶
const ( AgentAppId byte = 2 DumpApiSessions byte = 128 )
Variables ¶
var GlobalLifecycleNotifier = NewLifecycleNotifier()
GlobalLifecycleNotifier is the default lifecycle notifier instance used by the router. External components can register listeners with this global instance to receive router lifecycle events.
Example usage:
router.GlobalLifecycleNotifier.AddListener(myListener)
Functions ¶
This section is empty.
Types ¶
type LifecycleEvent ¶
type LifecycleEvent int
LifecycleEvent represents different phases in the router's lifecycle. Events are fired during router startup and shutdown to allow external components to hook into the router's lifecycle.
const ( // LifecycleEventConfigLoaded is fired when the router's Create() method is called, // before the router instance is created. This allows listeners to modify the // router configuration before the router is instantiated. LifecycleEventConfigLoaded LifecycleEvent = iota // LifecycleEventStart is fired when the router's Start() method is called, // before any initialization logic begins. This allows listeners to perform // setup operations or modify the router configuration before startup. LifecycleEventStart )
type LifecycleListener ¶
type LifecycleListener interface {
// OnLifecycleEvent is called when a lifecycle event occurs.
// The event parameter indicates which lifecycle phase is occurring.
// The router parameter provides access to the router instance. This will be nil
// for LifecycleEventConfigLoaded since the router has not been created yet.
// The config parameter provides access to the router configuration.
OnLifecycleEvent(event LifecycleEvent, router *Router, config *env.Config)
}
LifecycleListener defines the interface for components that want to receive notifications about router lifecycle events. Implementations should be thread-safe as they may be called concurrently.
type LifecycleNotifier ¶
type LifecycleNotifier struct {
// contains filtered or unexported fields
}
LifecycleNotifier manages a collection of lifecycle listeners and provides methods to notify them of router lifecycle events. It uses a thread-safe copy-on-write slice to store listeners, allowing concurrent access during event notification.
func NewLifecycleNotifier ¶
func NewLifecycleNotifier() *LifecycleNotifier
NewLifecycleNotifier creates a new lifecycle notifier with an empty listener list.
func (*LifecycleNotifier) AddListener ¶
func (ln *LifecycleNotifier) AddListener(listener LifecycleListener)
AddListener registers a new lifecycle listener. The listener will receive notifications for all future lifecycle events. This method is thread-safe and can be called concurrently with NotifyListeners.
func (*LifecycleNotifier) NotifyListeners ¶
func (ln *LifecycleNotifier) NotifyListeners(event LifecycleEvent, router *Router, config *env.Config)
NotifyListeners sends a lifecycle event notification to all registered listeners. Listeners are called synchronously in the order they were registered. If a listener panics, the panic will propagate and prevent subsequent listeners from being notified.
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) DefaultRequestTimeout ¶
func (*Router) GetAlerter ¶
func (*Router) GetCloseNotify ¶
func (self *Router) GetCloseNotify() <-chan struct{}
func (*Router) GetConnectEventsConfig ¶
func (self *Router) GetConnectEventsConfig() *env.ConnectEventsConfig
func (*Router) GetCtrlChannelBindHandler ¶
func (self *Router) GetCtrlChannelBindHandler() channel.BindHandler
func (*Router) GetCtrlRateLimiter ¶
func (self *Router) GetCtrlRateLimiter() rate.AdaptiveRateLimitTracker
func (*Router) GetDialerCfg ¶
func (self *Router) GetDialerCfg() map[string]xgress.OptionsData
func (*Router) GetForwarder ¶
func (*Router) GetHeartbeatOptions ¶
func (self *Router) GetHeartbeatOptions() env.HeartbeatOptions
func (*Router) GetIndexWatchers ¶
func (self *Router) GetIndexWatchers() env.IndexWatchers
func (*Router) GetLinkDialerPool ¶
func (self *Router) GetLinkDialerPool() goroutines.Pool
func (*Router) GetMetricsRegistry ¶
func (self *Router) GetMetricsRegistry() metrics.UsageRegistry
func (*Router) GetNetworkControllers ¶
func (self *Router) GetNetworkControllers() env.NetworkControllers
func (*Router) GetRateLimiterPool ¶
func (self *Router) GetRateLimiterPool() goroutines.Pool
func (*Router) GetRouterDataModel ¶
func (self *Router) GetRouterDataModel() *common.RouterDataModel
func (*Router) GetRouterId ¶
func (*Router) GetStateManager ¶
func (*Router) GetTraceHandler ¶
func (self *Router) GetTraceHandler() *channel.TraceHandler
func (*Router) GetVersionInfo ¶
func (self *Router) GetVersionInfo() versions.VersionProvider
func (*Router) GetXLinkRegistry ¶
func (*Router) GetXgressBindHandler ¶
func (self *Router) GetXgressBindHandler() xgress.BindHandler
func (*Router) GetXgressListeners ¶
func (self *Router) GetXgressListeners() []xgress_router.Listener
func (*Router) GetXgressMetrics ¶
func (self *Router) GetXgressMetrics() env.XgressMetrics
func (*Router) GetXgressRegistry ¶
func (*Router) GetXlinkDialers ¶
func (*Router) GetXlinkRegistry ¶
func (*Router) GetXrctrls ¶
func (*Router) IsRouterDataModelRequired ¶
func (*Router) ListenForShutdownSignal ¶
func (*Router) MarkRouterDataModelRequired ¶
func (self *Router) MarkRouterDataModelRequired()
func (*Router) NotifyCertsUpdated ¶
func (self *Router) NotifyCertsUpdated()
func (*Router) NotifyOfReconnect ¶
func (self *Router) NotifyOfReconnect(ch ctrlchan.CtrlChannel)
func (*Router) RegisterAgentBindHandler ¶
func (self *Router) RegisterAgentBindHandler(bindHandler channel.BindHandler)
func (*Router) RegisterAgentOp ¶
func (self *Router) RegisterAgentOp(opId byte, f func(c *bufio.ReadWriter) error)
func (*Router) RegisterDefaultAgentOps ¶
func (*Router) RegisterXWebHandlerFactory ¶
func (self *Router) RegisterXWebHandlerFactory(x xweb.ApiHandlerFactory) error
func (*Router) RenderJsonConfig ¶
func (*Router) RunCliAgent ¶
func (*Router) UpdateCtrlEndpoints ¶
func (*Router) UpdateLeader ¶
func (*Router) WithRouterDataModel ¶
func (self *Router) WithRouterDataModel(f func(*common.RouterDataModel) error) error
WithRouterDataModel passes the current router data model into the provide function
type RouterMonitor ¶
type RouterMonitor interface {
Monitor()
}
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package env provides the router environment registry for managing xgress protocol factories.
|
Package env provides the router environment registry for managing xgress protocol factories. |
|
internal
|
|