1
This commit is contained in:
parent
5f03fcf1ab
commit
a8bed347a7
62
msgqueue.go
Normal file
62
msgqueue.go
Normal file
@ -0,0 +1,62 @@
|
||||
package f5
|
||||
|
||||
import (
|
||||
"q5"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type MsgHandler struct {
|
||||
deleted bool
|
||||
entry q5.ListHead
|
||||
cb func(q5.Args)
|
||||
}
|
||||
|
||||
type msgQueue struct {
|
||||
msgHandlers [256] struct {
|
||||
lock sync.Mutex
|
||||
head q5.ListHead
|
||||
addingLock sync.Mutex
|
||||
addingHead q5.ListHead
|
||||
}
|
||||
}
|
||||
|
||||
func (this *msgQueue) init() {
|
||||
for i := 0; i < len(this.msgHandlers); i++ {
|
||||
node := &this.msgHandlers[i]
|
||||
node.lock.Lock()
|
||||
node.head.Init(nil)
|
||||
node.lock.Unlock()
|
||||
|
||||
node.addingLock.Lock()
|
||||
node.addingHead.Init(nil)
|
||||
node.addingLock.Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *msgQueue) unInit() {
|
||||
|
||||
}
|
||||
|
||||
func (this *msgQueue) RegisterCb(msgId int, cb func(q5.Args)) *MsgHandler {
|
||||
if msgId >= len(this.msgHandlers) {
|
||||
panic("msgQueue.msgId error")
|
||||
}
|
||||
p := new(MsgHandler)
|
||||
p.cb = cb
|
||||
p.entry.Init(p)
|
||||
node := &this.msgHandlers[msgId]
|
||||
node.addingLock.Lock()
|
||||
defer node.addingLock.Unlock()
|
||||
node.addingHead.AddTail(&p.entry)
|
||||
return p
|
||||
}
|
||||
|
||||
func (this *msgQueue) UnRegisterCb(handler *MsgHandler) {
|
||||
if handler != nil {
|
||||
handler.deleted = true
|
||||
}
|
||||
}
|
||||
|
||||
func (this *msgQueue) FireEvent(msgId int, args q5.Args) {
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user