refactor-fix(backend-heuristics/db): create handlers for each session separately
This commit is contained in:
parent
e65fa58ab5
commit
a6f8857b89
3 changed files with 31 additions and 27 deletions
|
|
@ -30,15 +30,17 @@ func main() {
|
|||
pg := cache.NewPGCache(postgres.NewConn(cfg.Postgres), cfg.ProjectExpirationTimeoutMs)
|
||||
defer pg.Close()
|
||||
|
||||
// Declare message handlers we want to apply for each incoming message
|
||||
msgHandlers := []handlers.MessageProcessor{
|
||||
custom.NewMainHandler(), // TODO: separate to several handler
|
||||
//custom.NewInputEventBuilder(),
|
||||
//custom.NewPageEventBuilder(),
|
||||
// HandlersFabric returns the list of message handlers we want to be applied to each incoming message.
|
||||
handlersFabric := func() {
|
||||
return []handlers.MessageProcessor{
|
||||
custom.NewMainHandler(), // TODO: separate to several handler
|
||||
//custom.NewInputEventBuilder(),
|
||||
//custom.NewPageEventBuilder(),
|
||||
}
|
||||
}
|
||||
|
||||
// Create handler's aggregator
|
||||
builderMap := builder.NewBuilderMap(msgHandlers...)
|
||||
builderMap := builder.NewBuilderMap(handlersFabric)
|
||||
|
||||
// Init modules
|
||||
saver := datasaver.New(pg)
|
||||
|
|
|
|||
|
|
@ -25,24 +25,26 @@ func main() {
|
|||
// Load service configuration
|
||||
cfg := ender.New()
|
||||
|
||||
// Declare message handlers we want to apply for each incoming message
|
||||
msgHandlers := []handlers.MessageProcessor{
|
||||
// web handlers
|
||||
&web.ClickRageDetector{},
|
||||
&web.CpuIssueDetector{},
|
||||
&web.DeadClickDetector{},
|
||||
&web.MemoryIssueDetector{},
|
||||
&web.PerformanceAggregator{},
|
||||
// iOS handlers
|
||||
&ios.AppNotResponding{},
|
||||
&ios.ClickRageDetector{},
|
||||
&ios.PerformanceAggregator{},
|
||||
// Other handlers (you can add your custom handlers here)
|
||||
&custom.CustomHandler{},
|
||||
// HandlersFabric returns the list of message handlers we want to be applied to each incoming message.
|
||||
handlersFabric := func() {
|
||||
return []handlers.MessageProcessor{
|
||||
// web handlers
|
||||
&web.ClickRageDetector{},
|
||||
&web.CpuIssueDetector{},
|
||||
&web.DeadClickDetector{},
|
||||
&web.MemoryIssueDetector{},
|
||||
&web.PerformanceAggregator{},
|
||||
// iOS handlers
|
||||
&ios.AppNotResponding{},
|
||||
&ios.ClickRageDetector{},
|
||||
&ios.PerformanceAggregator{},
|
||||
// Other handlers (you can add your custom handlers here)
|
||||
&custom.CustomHandler{},
|
||||
}
|
||||
}
|
||||
|
||||
// Create handler's aggregator
|
||||
builderMap := builder.NewBuilderMap(msgHandlers...)
|
||||
builderMap := builder.NewBuilderMap(handlersFabric)
|
||||
|
||||
// Init logger
|
||||
statsLogger := logger.NewQueueStats(cfg.LoggerTimeout)
|
||||
|
|
|
|||
|
|
@ -6,21 +6,21 @@ import (
|
|||
)
|
||||
|
||||
type builderMap struct {
|
||||
handlers []handlers.MessageProcessor
|
||||
sessions map[uint64]*builder
|
||||
handlersFabric func() []handlers.MessageProcessor
|
||||
sessions map[uint64]*builder
|
||||
}
|
||||
|
||||
func NewBuilderMap(handlers ...handlers.MessageProcessor) *builderMap {
|
||||
func NewBuilderMap(handlersFabric func() []handlers.MessageProcessor) *builderMap {
|
||||
return &builderMap{
|
||||
handlers: handlers,
|
||||
sessions: make(map[uint64]*builder),
|
||||
handlersFabric: handlersFabric,
|
||||
sessions: make(map[uint64]*builder),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *builderMap) GetBuilder(sessionID uint64) *builder {
|
||||
b := m.sessions[sessionID]
|
||||
if b == nil {
|
||||
b = NewBuilder(m.handlers...) // Should create new instances
|
||||
b = NewBuilder(m.handlersFabric()) // Should create new instances
|
||||
m.sessions[sessionID] = b
|
||||
}
|
||||
return b
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue