- Remove CorrelationKeyFull() alias, use CorrelationKey() everywhere - Remove duplicate TimeProvider interface from ports/source.go - Remove unused time import from ports/source.go - Update README.md: replace ./build.sh and ./test.sh with make commands - Update RPM package names in README to match current version (1.0.3) Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/logcorrelator/logcorrelator/internal/domain"
|
|
)
|
|
|
|
// EventSource defines the interface for log sources.
|
|
type EventSource interface {
|
|
// Start begins reading events and sending them to the channel.
|
|
// Returns an error if the source cannot be started.
|
|
Start(ctx context.Context, eventChan chan<- *domain.NormalizedEvent) error
|
|
|
|
// Stop gracefully stops the source.
|
|
Stop() error
|
|
|
|
// Name returns the source name.
|
|
Name() string
|
|
}
|
|
|
|
// CorrelatedLogSink defines the interface for correlated log destinations.
|
|
type CorrelatedLogSink interface {
|
|
// Write sends a correlated log to the sink.
|
|
Write(ctx context.Context, log domain.CorrelatedLog) error
|
|
|
|
// Flush flushes any buffered logs.
|
|
Flush(ctx context.Context) error
|
|
|
|
// Close closes the sink.
|
|
Close() error
|
|
|
|
// Name returns the sink name.
|
|
Name() string
|
|
}
|
|
|
|
// CorrelationProcessor defines the interface for the correlation service.
|
|
// This allows for easier testing and alternative implementations.
|
|
type CorrelationProcessor interface {
|
|
// ProcessEvent processes an incoming event and returns correlated logs.
|
|
ProcessEvent(event *domain.NormalizedEvent) []domain.CorrelatedLog
|
|
|
|
// Flush forces emission of remaining buffered events.
|
|
Flush() []domain.CorrelatedLog
|
|
|
|
// GetBufferSizes returns the current buffer sizes for monitoring.
|
|
GetBufferSizes() (int, int)
|
|
}
|