コード例 #1
0
ファイル: register.go プロジェクト: huangbenyu/cellnet
// 将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)
	})
}
コード例 #2
0
ファイル: msgmapper.go プロジェクト: petersang/cellnet
func MapMessage(msgIns interface{}) {

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

	msgID := cellnet.Name2ID(msgName)

	MapNameID(msgName, msgID)
}
コード例 #3
0
ファイル: main.go プロジェクト: huangbenyu/cellnet
func main() {

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

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

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

}