Files
vRp.CD2g_test/server/dispatcher.go
T
kercylan98 70f7a79c88 refactor: server 包重构及性能优化
1、由于设计不合理,移除 server
包中跨服相关的内容;
2、重构消息处理机制和消息分流机制并优化性能;
3、分流消息支持数据包、定时任务、异步回调的分流;
4、长连接支持获取定时器。
2023-11-10 18:40:55 +08:00

39 lines
709 B
Go

package server
import "github.com/kercylan98/minotaur/utils/buffer"
// generateDispatcher 生成消息分发器
func generateDispatcher(handler func(message *Message)) *dispatcher {
return &dispatcher{
buffer: buffer.NewUnboundedN[*Message](),
handler: handler,
}
}
// dispatcher 消息分发器
type dispatcher struct {
buffer *buffer.Unbounded[*Message]
handler func(message *Message)
}
func (slf *dispatcher) start() {
for {
select {
case message, ok := <-slf.buffer.Get():
if !ok {
return
}
slf.buffer.Load()
slf.handler(message)
}
}
}
func (slf *dispatcher) put(message *Message) {
slf.buffer.Put(message)
}
func (slf *dispatcher) close() {
slf.buffer.Close()
}