36 lines
1.0 KiB
Go
36 lines
1.0 KiB
Go
package netlib
|
|
|
|
var (
|
|
unknowPacketHandlerCreatorPool = make(map[string]UnknowPacketHandlerCreator)
|
|
)
|
|
|
|
type UnknowPacketHandlerCreator func() UnknowPacketHandler
|
|
|
|
type UnknowPacketHandler interface {
|
|
OnUnknowPacket(s *Session, packetid int, logicNo uint32, data []byte) bool //run in session receive goroutine
|
|
}
|
|
|
|
type UnknowPacketHandlerWrapper func(session *Session, packetid int, logicNo uint32, data []byte) bool
|
|
|
|
func (hw UnknowPacketHandlerWrapper) OnUnknowPacket(session *Session, packetid int, logicNo uint32, data []byte) bool {
|
|
return hw(session, packetid, logicNo, data)
|
|
}
|
|
|
|
func RegisteUnknowPacketHandlerCreator(name string, ephc UnknowPacketHandlerCreator) {
|
|
if ephc == nil {
|
|
return
|
|
}
|
|
if _, exist := unknowPacketHandlerCreatorPool[name]; exist {
|
|
panic("repeate registe ErrorPacketHandler:" + name)
|
|
}
|
|
|
|
unknowPacketHandlerCreatorPool[name] = ephc
|
|
}
|
|
|
|
func GetUnknowPacketHandlerCreator(name string) UnknowPacketHandlerCreator {
|
|
if ephc, exist := unknowPacketHandlerCreatorPool[name]; exist {
|
|
return ephc
|
|
}
|
|
return nil
|
|
}
|