goserver_sync/core/netlib/unknowpackethandler.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
}