コード例 #1
0
ファイル: message.go プロジェクト: youxidev/GoGameServer
func (msg *gatewayMsg) Unmarshal(r *binary.Reader) error {
	msg.Command = r.ReadUint8()
	//	DEBUG("收到:" + strconv.Itoa(int(msg.Command)))
	switch msg.Command {
	case CMD_NEW_1:
		msg.ClientId = r.ReadUint64BE()
		msg.Data = r.ReadPacket(binary.SplitByUint8)
	case CMD_NEW_2:
		msg.ClientId = r.ReadUint64BE()
		msg.ClientIds = []uint64{r.ReadUint64BE()}
	case CMD_NEW_3:
		msg.ClientId = r.ReadUint64BE()
	case CMD_DEL:
		msg.ClientId = r.ReadUint64BE()
	case CMD_MSG:
		msg.ClientId = r.ReadUint64BE()
		msg.Data = r.ReadPacket(binary.SplitByUvarint)
	case CMD_BRD:
		num := int(r.ReadUvarint())
		msg.ClientIds = make([]uint64, num)
		for i := 0; i < num; i++ {
			msg.ClientIds[i] = r.ReadUvarint()
		}
		msg.Data = r.ReadPacket(binary.SplitByUvarint)
	}
	return nil
}
コード例 #2
0
ファイル: message.go プロジェクト: 616050468/link
func (msg *gatewayMsg) BinaryDecode(r *binary.Reader) error {
	msg.Command = r.ReadUint8()
	switch msg.Command {
	case CMD_NEW_1:
		msg.ClientId = r.ReadUint64BE()
		msg.Data = r.ReadPacket(binary.SplitByUint8)
	case CMD_NEW_2:
		msg.ClientId = r.ReadUint64BE()
		msg.ClientIds = []uint64{r.ReadUint64BE()}
	case CMD_DEL:
		msg.ClientId = r.ReadUint64BE()
	case CMD_MSG:
		msg.ClientId = r.ReadUint64BE()
		msg.Data = r.ReadPacket(binary.SplitByUvarint)
	case CMD_BRD:
		num := int(r.ReadUvarint())
		msg.ClientIds = make([]uint64, num)
		for i := 0; i < num; i++ {
			msg.ClientIds[i] = r.ReadUvarint()
		}
		msg.Data = r.ReadPacket(binary.SplitByUvarint)
	}
	return nil
}