Ejemplo n.º 1
0
// 将PB消息解析封装到闭包中
func RegisterMessage(disp *PacketDispatcher, msgIns interface{}, userHandler func(cellnet.CellID, interface{})) {

	msgType := reflect.TypeOf(msgIns)

	msgName := msgType.String()

	msgID := cellnet.Name2ID(msgName)

	// 将消息注册到mapper中, 提供反射用
	addMapper(msgName, msgID)

	//log.Printf("[dispatcher] #regmsg %s(%d 0x%x)", msgName, msgID, msgID)

	disp.RegisterCallback(msgID, func(ses cellnet.CellID, pkt *cellnet.Packet) {

		rawMsg, err := cellnet.ParsePacket(pkt, msgType)

		if err != nil {
			log.Printf("[cellnet] unmarshaling error:\n", err)
			return
		}

		userHandler(ses, rawMsg)
	})
}
Ejemplo n.º 2
0
func MapMessage(msgIns interface{}) {

	msgName := reflect.TypeOf(msgIns).String()

	msgID := cellnet.Name2ID(msgName)

	MapNameID(msgName, msgID)
}
Ejemplo n.º 3
0
func main() {

	if len(os.Args) < 2 {
		help()
		return
	}

	id := cellnet.Name2ID(os.Args[1])

	fmt.Printf("id: %d (0x%x)", id, id)

}