openreplay/backend/pkg/messages/iterator-sink.go
Alexander 3b3e95a413
Observability upgrade (#3146)
* feat(metrics): grand update

* feat(metrics): fixed missing part in ee tracer

* feat(assets): added missing arg

* feat(metrics): fixed naming problems
2025-03-13 08:09:29 +01:00

34 lines
903 B
Go

package messages
import (
"openreplay/backend/pkg/logger"
"openreplay/backend/pkg/metrics/sink"
)
type sinkIteratorImpl struct {
coreIterator MessageIterator
handler MessageHandler
metrics sink.Sink
}
func NewSinkMessageIterator(log logger.Logger, messageHandler MessageHandler, messageFilter []int, autoDecode bool, metrics sink.Sink) MessageIterator {
iter := &sinkIteratorImpl{
handler: messageHandler,
metrics: metrics,
}
iter.coreIterator = NewMessageIterator(log, iter.handle, messageFilter, autoDecode)
return iter
}
func (i *sinkIteratorImpl) handle(message Message) {
i.handler(message)
}
func (i *sinkIteratorImpl) Iterate(batchData []byte, batchInfo *BatchInfo) {
i.metrics.RecordBatchSize(float64(len(batchData)))
i.metrics.IncreaseTotalBatches()
// Call core iterator
i.coreIterator.Iterate(batchData, batchInfo)
// Send batch end signal
i.handler(nil)
}