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) }