* feat(backend): try a new approach for logs formatting (http) * feat(backend): added logger module * feat(backend): added project/session info to /i endpoint * feat(backend): found a solution for correct caller information * feat(backend): finished logs for http handlers * feat(backend): finished logs for mobile http handlers * feat(backend): finished ender * feat(backend): finished assets * feat(backend): finished heuristics * feat(backend): finished image-storage * feat(backend): finished sink * feat(backend): finished storage * feat(backend): formatted logs in all services * feat(backend): finished foss part * feat(backend): added missed foss part * feat(backend): fixed panic in memory manager and sink service * feat(backend): connectors
32 lines
830 B
Go
32 lines
830 B
Go
package messages
|
|
|
|
import (
|
|
"openreplay/backend/pkg/logger"
|
|
"openreplay/backend/pkg/metrics/sink"
|
|
)
|
|
|
|
type sinkIteratorImpl struct {
|
|
coreIterator MessageIterator
|
|
handler MessageHandler
|
|
}
|
|
|
|
func NewSinkMessageIterator(log logger.Logger, messageHandler MessageHandler, messageFilter []int, autoDecode bool) MessageIterator {
|
|
iter := &sinkIteratorImpl{
|
|
handler: messageHandler,
|
|
}
|
|
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) {
|
|
sink.RecordBatchSize(float64(len(batchData)))
|
|
sink.IncreaseTotalBatches()
|
|
// Call core iterator
|
|
i.coreIterator.Iterate(batchData, batchInfo)
|
|
// Send batch end signal
|
|
i.handler(nil)
|
|
}
|