mirror of https://github.com/rocboss/paopao-ce
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.2 KiB
62 lines
1.2 KiB
// Copyright 2023 ROC. All rights reserved.
|
|
// Use of this source code is governed by a MIT style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package events
|
|
|
|
import (
|
|
"github.com/alimy/tryst/event"
|
|
"github.com/alimy/tryst/pool"
|
|
"github.com/rocboss/paopao-ce/internal/core"
|
|
)
|
|
|
|
type Event = event.Event
|
|
|
|
type EventManager interface {
|
|
Start()
|
|
Stop()
|
|
OnEvent(event Event)
|
|
}
|
|
|
|
type simpleWorkerHook struct {
|
|
name string
|
|
cache core.MetricCache
|
|
}
|
|
|
|
type simpleEventManager struct {
|
|
em event.EventManager
|
|
}
|
|
|
|
func (s *simpleEventManager) Start() {
|
|
s.em.Start()
|
|
}
|
|
|
|
func (s *simpleEventManager) Stop() {
|
|
s.em.Stop()
|
|
}
|
|
|
|
func (s *simpleEventManager) OnEvent(event Event) {
|
|
s.em.OnEvent(event)
|
|
}
|
|
|
|
func (h *simpleWorkerHook) OnJoin(count int32) {
|
|
h.cache.SetEventTempWorkerCount(h.name, count)
|
|
}
|
|
|
|
func (h *simpleWorkerHook) OnLeave(count int32) {
|
|
h.cache.SetEventTempWorkerCount(h.name, count)
|
|
}
|
|
|
|
func NewEventManager(fn pool.RespFn[Event], opts ...pool.Option) EventManager {
|
|
return &simpleEventManager{
|
|
em: event.NewEventManager(fn, opts...),
|
|
}
|
|
}
|
|
|
|
func NewEventWorkerHook(name string, mc core.MetricCache) pool.WorkerHook {
|
|
return &simpleWorkerHook{
|
|
name: name,
|
|
cache: mc,
|
|
}
|
|
}
|