openreplay/backend/pkg/messages/iterator-ender.go
Alexander 45c956c489
Json logs format (#1952)
* 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
2024-03-14 12:51:14 +01:00

32 lines
865 B
Go

package messages
import "openreplay/backend/pkg/logger"
type enderIteratorImpl struct {
coreIterator MessageIterator
handler MessageHandler
lastMessage Message
}
func NewEnderMessageIterator(log logger.Logger, messageHandler MessageHandler, messageFilter []int, autoDecode bool) MessageIterator {
enderIter := &enderIteratorImpl{
handler: messageHandler,
}
enderIter.coreIterator = NewMessageIterator(log, enderIter.handle, messageFilter, autoDecode)
return enderIter
}
func (e *enderIteratorImpl) handle(message Message) {
e.lastMessage = message
}
func (e *enderIteratorImpl) Iterate(batchData []byte, batchInfo *BatchInfo) {
// Reset last message
e.lastMessage = nil
// Call core iterator
e.coreIterator.Iterate(batchData, batchInfo)
// Call handler if last message is not nil
if e.lastMessage != nil {
e.handler(e.lastMessage)
}
}