Add detailed godoc documentation to CLIEntry function
Expand the documentation comment for CLIEntry to provide more context about what the function does, including its use of the fx dependency injection framework, signal handling, and blocking behavior.
This commit is contained in:
@@ -22,7 +22,10 @@ const (
|
||||
asnBatchTimeout = 2 * time.Second
|
||||
)
|
||||
|
||||
// ASHandler handles ASN information from BGP messages using batched operations
|
||||
// ASHandler processes Autonomous System Number (ASN) information extracted from
|
||||
// BGP UPDATE messages. It uses batched database operations to efficiently store
|
||||
// ASN data, collecting operations into batches that are flushed either when the
|
||||
// batch reaches a size threshold or after a timeout period.
|
||||
type ASHandler struct {
|
||||
db database.Store
|
||||
logger *logger.Logger
|
||||
@@ -40,7 +43,11 @@ type asnOp struct {
|
||||
timestamp time.Time
|
||||
}
|
||||
|
||||
// NewASHandler creates a new batched ASN handler
|
||||
// NewASHandler creates and returns a new ASHandler instance. It initializes
|
||||
// the batching system and starts a background goroutine that periodically
|
||||
// flushes accumulated ASN operations to the database. The caller must call
|
||||
// Stop when finished to ensure all pending operations are flushed and the
|
||||
// background goroutine is terminated.
|
||||
func NewASHandler(db database.Store, logger *logger.Logger) *ASHandler {
|
||||
h := &ASHandler{
|
||||
db: db,
|
||||
@@ -57,19 +64,27 @@ func NewASHandler(db database.Store, logger *logger.Logger) *ASHandler {
|
||||
return h
|
||||
}
|
||||
|
||||
// WantsMessage returns true if this handler wants to process messages of the given type
|
||||
// WantsMessage reports whether this handler should process messages of the
|
||||
// given type. ASHandler only processes "UPDATE" messages, as these contain
|
||||
// the AS path information needed to track autonomous systems.
|
||||
func (h *ASHandler) WantsMessage(messageType string) bool {
|
||||
// We only care about UPDATE messages for the database
|
||||
return messageType == "UPDATE"
|
||||
}
|
||||
|
||||
// QueueCapacity returns the desired queue capacity for this handler
|
||||
// QueueCapacity returns the recommended message queue size for this handler.
|
||||
// ASHandler uses a large queue capacity to accommodate high-volume BGP streams,
|
||||
// as the batching mechanism allows efficient processing of accumulated messages.
|
||||
func (h *ASHandler) QueueCapacity() int {
|
||||
// Batching allows us to use a larger queue
|
||||
return asHandlerQueueSize
|
||||
}
|
||||
|
||||
// HandleMessage processes a RIS message and queues database operations
|
||||
// HandleMessage processes a RIS Live BGP message by extracting all ASNs from
|
||||
// the AS path and queuing them for batch insertion into the database. The
|
||||
// origin ASN (last element in the path) and all transit ASNs are recorded
|
||||
// with their associated timestamps. The batch is automatically flushed when
|
||||
// it reaches the configured size threshold.
|
||||
func (h *ASHandler) HandleMessage(msg *ristypes.RISMessage) {
|
||||
// Use the pre-parsed timestamp
|
||||
timestamp := msg.ParsedTimestamp
|
||||
|
||||
Reference in New Issue
Block a user