Exemple #1
0
func (i *GameController) process(connection network.Connection, session string) error {
	message, err := connection.ReadMessage()
	if err != nil {
		return err
	}
	msession := message.GetSession()
	if msession != session {
		return fmt.Errorf("reject message. wait %s, get %s session", session, msession)
	}
	mtype := message.GetType()
	switch mtype {
	case protocol.PingMessageType:
		i.output <- message
		break
	case protocol.GameInputMessageType:
		if i.input != nil {
			message.SetSession(i.player)
			i.input <- message
		}
		break
	case protocol.GamePlayMessageType:
		i.processGamePlay(message.(*protocol.GamePlayMessage))
		break

	default:
		log.Printf("skip message from session %s with type: %s\n", msession, mtype)
		break
	}
	return nil
}