* 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
865 B
Go
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)
|
|
}
|
|
}
|