Added error packets for unknown avatar and unknown player id (unused yet).
This commit is contained in:
@@ -148,6 +148,17 @@ Server/Client Reply: Avatar End
|
|||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
|
||||||
|
|
||||||
|
Server/Client Reply: Unknown Avatar
|
||||||
|
|
||||||
|
0 1 2 3
|
||||||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| Message Type = 7 | Message Length = 8 |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| Request ID |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
|
||||||
|
|
||||||
Basic Structure: Game Info Block
|
Basic Structure: Game Info Block
|
||||||
|
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
@@ -286,6 +297,17 @@ Player Flags:
|
|||||||
0x02 set: Player has avatar
|
0x02 set: Player has avatar
|
||||||
|
|
||||||
|
|
||||||
|
Server Reply: Unknown Player Id
|
||||||
|
|
||||||
|
0 1 2 3
|
||||||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| Message Type = 34 | Message Length = 8 |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| Player ID |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
|
||||||
|
|
||||||
Client Request: Create Game
|
Client Request: Create Game
|
||||||
|
|
||||||
0 1 2 3
|
0 1 2 3
|
||||||
|
|||||||
@@ -33,12 +33,14 @@ using namespace std;
|
|||||||
#define NET_TYPE_AVATAR_HEADER 0x0004
|
#define NET_TYPE_AVATAR_HEADER 0x0004
|
||||||
#define NET_TYPE_AVATAR_FILE 0x0005
|
#define NET_TYPE_AVATAR_FILE 0x0005
|
||||||
#define NET_TYPE_AVATAR_END 0x0006
|
#define NET_TYPE_AVATAR_END 0x0006
|
||||||
|
#define NET_TYPE_UNKNOWN_AVATAR 0x0007
|
||||||
#define NET_TYPE_GAME_LIST_NEW 0x0010
|
#define NET_TYPE_GAME_LIST_NEW 0x0010
|
||||||
#define NET_TYPE_GAME_LIST_UPDATE 0x0011
|
#define NET_TYPE_GAME_LIST_UPDATE 0x0011
|
||||||
#define NET_TYPE_GAME_LIST_PLAYER_JOINED 0x0012
|
#define NET_TYPE_GAME_LIST_PLAYER_JOINED 0x0012
|
||||||
#define NET_TYPE_GAME_LIST_PLAYER_LEFT 0x0013
|
#define NET_TYPE_GAME_LIST_PLAYER_LEFT 0x0013
|
||||||
#define NET_TYPE_RETRIEVE_PLAYER_INFO 0x0020
|
#define NET_TYPE_RETRIEVE_PLAYER_INFO 0x0020
|
||||||
#define NET_TYPE_PLAYER_INFO 0x0021
|
#define NET_TYPE_PLAYER_INFO 0x0021
|
||||||
|
#define NET_TYPE_UNKNOWN_PLAYER_ID 0x0022
|
||||||
#define NET_TYPE_CREATE_GAME 0x0030
|
#define NET_TYPE_CREATE_GAME 0x0030
|
||||||
#define NET_TYPE_JOIN_GAME 0x0031
|
#define NET_TYPE_JOIN_GAME 0x0031
|
||||||
#define NET_TYPE_JOIN_GAME_ACK 0x0032
|
#define NET_TYPE_JOIN_GAME_ACK 0x0032
|
||||||
@@ -168,6 +170,12 @@ struct GCC_PACKED NetPacketAvatarEndData
|
|||||||
u_int32_t requestId;
|
u_int32_t requestId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GCC_PACKED NetPacketUnknownAvatarData
|
||||||
|
{
|
||||||
|
NetPacketHeader head;
|
||||||
|
u_int32_t requestId;
|
||||||
|
};
|
||||||
|
|
||||||
struct GCC_PACKED GameInfoData
|
struct GCC_PACKED GameInfoData
|
||||||
{
|
{
|
||||||
u_int16_t maxNumberOfPlayers;
|
u_int16_t maxNumberOfPlayers;
|
||||||
@@ -230,6 +238,12 @@ struct GCC_PACKED NetPacketPlayerInfoData
|
|||||||
u_int16_t playerNameLength;
|
u_int16_t playerNameLength;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GCC_PACKED NetPacketUnknownPlayerIdData
|
||||||
|
{
|
||||||
|
NetPacketHeader head;
|
||||||
|
u_int32_t playerId;
|
||||||
|
};
|
||||||
|
|
||||||
struct GCC_PACKED NetPacketCreateGameData
|
struct GCC_PACKED NetPacketCreateGameData
|
||||||
{
|
{
|
||||||
NetPacketHeader head;
|
NetPacketHeader head;
|
||||||
@@ -607,6 +621,9 @@ NetPacket::Create(char *data, unsigned &dataSize)
|
|||||||
case NET_TYPE_AVATAR_END:
|
case NET_TYPE_AVATAR_END:
|
||||||
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketAvatarEnd);
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketAvatarEnd);
|
||||||
break;
|
break;
|
||||||
|
case NET_TYPE_UNKNOWN_AVATAR:
|
||||||
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketUnknownAvatar);
|
||||||
|
break;
|
||||||
case NET_TYPE_GAME_LIST_NEW:
|
case NET_TYPE_GAME_LIST_NEW:
|
||||||
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketGameListNew);
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketGameListNew);
|
||||||
break;
|
break;
|
||||||
@@ -625,6 +642,9 @@ NetPacket::Create(char *data, unsigned &dataSize)
|
|||||||
case NET_TYPE_PLAYER_INFO:
|
case NET_TYPE_PLAYER_INFO:
|
||||||
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketPlayerInfo);
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketPlayerInfo);
|
||||||
break;
|
break;
|
||||||
|
case NET_TYPE_UNKNOWN_PLAYER_ID:
|
||||||
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketUnknownPlayerId);
|
||||||
|
break;
|
||||||
case NET_TYPE_CREATE_GAME:
|
case NET_TYPE_CREATE_GAME:
|
||||||
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketCreateGame);
|
tmpPacket = boost::shared_ptr<NetPacket>(new NetPacketCreateGame);
|
||||||
break;
|
break;
|
||||||
@@ -829,6 +849,12 @@ NetPacket::ToNetPacketAvatarEnd() const
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const NetPacketUnknownAvatar *
|
||||||
|
NetPacket::ToNetPacketUnknownAvatar() const
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
const NetPacketGameListNew *
|
const NetPacketGameListNew *
|
||||||
NetPacket::ToNetPacketGameListNew() const
|
NetPacket::ToNetPacketGameListNew() const
|
||||||
{
|
{
|
||||||
@@ -865,6 +891,12 @@ NetPacket::ToNetPacketPlayerInfo() const
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const NetPacketUnknownPlayerId *
|
||||||
|
NetPacket::ToNetPacketUnknownPlayerId() const
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
const NetPacketCreateGame *
|
const NetPacketCreateGame *
|
||||||
NetPacket::ToNetPacketCreateGame() const
|
NetPacket::ToNetPacketCreateGame() const
|
||||||
{
|
{
|
||||||
@@ -1523,6 +1555,62 @@ NetPacketAvatarEnd::InternalCheck(const NetPacketHeader*) const
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NetPacketUnknownAvatar::NetPacketUnknownAvatar()
|
||||||
|
: NetPacket(NET_TYPE_UNKNOWN_AVATAR, sizeof(NetPacketUnknownAvatarData), sizeof(NetPacketUnknownAvatarData))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NetPacketUnknownAvatar::~NetPacketUnknownAvatar()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::shared_ptr<NetPacket>
|
||||||
|
NetPacketUnknownAvatar::Clone() const
|
||||||
|
{
|
||||||
|
boost::shared_ptr<NetPacket> newPacket(new NetPacketUnknownAvatar);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
newPacket->SetRawData(GetRawData());
|
||||||
|
} catch (const NetException &)
|
||||||
|
{
|
||||||
|
// Need to return the new packet anyway.
|
||||||
|
}
|
||||||
|
return newPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownAvatar::SetData(const NetPacketUnknownAvatar::Data &inData)
|
||||||
|
{
|
||||||
|
NetPacketUnknownAvatarData *tmpData = (NetPacketUnknownAvatarData *)GetRawData();
|
||||||
|
|
||||||
|
tmpData->requestId = htonl(inData.requestId);
|
||||||
|
|
||||||
|
// Check the packet - just in case.
|
||||||
|
Check(GetRawData());
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownAvatar::GetData(NetPacketUnknownAvatar::Data &outData) const
|
||||||
|
{
|
||||||
|
NetPacketUnknownAvatarData *tmpData = (NetPacketUnknownAvatarData *)GetRawData();
|
||||||
|
|
||||||
|
outData.requestId = ntohl(tmpData->requestId);
|
||||||
|
}
|
||||||
|
|
||||||
|
const NetPacketUnknownAvatar *
|
||||||
|
NetPacketUnknownAvatar::ToNetPacketUnknownAvatar() const
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownAvatar::InternalCheck(const NetPacketHeader*) const
|
||||||
|
{
|
||||||
|
// Nothing to do.
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
NetPacketGameListNew::NetPacketGameListNew()
|
NetPacketGameListNew::NetPacketGameListNew()
|
||||||
: NetPacket(NET_TYPE_GAME_LIST_NEW, sizeof(NetPacketGameListNewData), MAX_PACKET_SIZE)
|
: NetPacket(NET_TYPE_GAME_LIST_NEW, sizeof(NetPacketGameListNewData), MAX_PACKET_SIZE)
|
||||||
{
|
{
|
||||||
@@ -2025,6 +2113,63 @@ NetPacketPlayerInfo::InternalCheck(const NetPacketHeader* data) const
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NetPacketUnknownPlayerId::NetPacketUnknownPlayerId()
|
||||||
|
: NetPacket(NET_TYPE_UNKNOWN_PLAYER_ID, sizeof(NetPacketUnknownPlayerIdData), sizeof(NetPacketUnknownPlayerIdData))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NetPacketUnknownPlayerId::~NetPacketUnknownPlayerId()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::shared_ptr<NetPacket>
|
||||||
|
NetPacketUnknownPlayerId::Clone() const
|
||||||
|
{
|
||||||
|
boost::shared_ptr<NetPacket> newPacket(new NetPacketUnknownPlayerId);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
newPacket->SetRawData(GetRawData());
|
||||||
|
} catch (const NetException &)
|
||||||
|
{
|
||||||
|
// Need to return the new packet anyway.
|
||||||
|
}
|
||||||
|
return newPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownPlayerId::SetData(const NetPacketUnknownPlayerId::Data &inData)
|
||||||
|
{
|
||||||
|
NetPacketUnknownPlayerIdData *tmpData = (NetPacketUnknownPlayerIdData *)GetRawData();
|
||||||
|
|
||||||
|
// Set the data.
|
||||||
|
tmpData->playerId = htonl(inData.playerId);
|
||||||
|
|
||||||
|
// Check the packet - just in case.
|
||||||
|
Check(GetRawData());
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownPlayerId::GetData(NetPacketUnknownPlayerId::Data &outData) const
|
||||||
|
{
|
||||||
|
// We assume that the data is valid. Validity has already been checked.
|
||||||
|
NetPacketUnknownPlayerIdData *tmpData = (NetPacketUnknownPlayerIdData *)GetRawData();
|
||||||
|
|
||||||
|
outData.playerId = ntohl(tmpData->playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
const NetPacketUnknownPlayerId *
|
||||||
|
NetPacketUnknownPlayerId::ToNetPacketUnknownPlayerId() const
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetPacketUnknownPlayerId::InternalCheck(const NetPacketHeader*) const
|
||||||
|
{
|
||||||
|
// Nothing to do.
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
NetPacketCreateGame::NetPacketCreateGame()
|
NetPacketCreateGame::NetPacketCreateGame()
|
||||||
: NetPacket(NET_TYPE_CREATE_GAME, sizeof(NetPacketCreateGameData), MAX_PACKET_SIZE)
|
: NetPacket(NET_TYPE_CREATE_GAME, sizeof(NetPacketCreateGameData), MAX_PACKET_SIZE)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -52,12 +52,14 @@ class NetPacketRetrieveAvatar;
|
|||||||
class NetPacketAvatarHeader;
|
class NetPacketAvatarHeader;
|
||||||
class NetPacketAvatarFile;
|
class NetPacketAvatarFile;
|
||||||
class NetPacketAvatarEnd;
|
class NetPacketAvatarEnd;
|
||||||
|
class NetPacketUnknownAvatar;
|
||||||
class NetPacketGameListNew;
|
class NetPacketGameListNew;
|
||||||
class NetPacketGameListUpdate;
|
class NetPacketGameListUpdate;
|
||||||
class NetPacketGameListPlayerJoined;
|
class NetPacketGameListPlayerJoined;
|
||||||
class NetPacketGameListPlayerLeft;
|
class NetPacketGameListPlayerLeft;
|
||||||
class NetPacketRetrievePlayerInfo;
|
class NetPacketRetrievePlayerInfo;
|
||||||
class NetPacketPlayerInfo;
|
class NetPacketPlayerInfo;
|
||||||
|
class NetPacketUnknownPlayerId;
|
||||||
class NetPacketCreateGame;
|
class NetPacketCreateGame;
|
||||||
class NetPacketJoinGame;
|
class NetPacketJoinGame;
|
||||||
class NetPacketJoinGameAck;
|
class NetPacketJoinGameAck;
|
||||||
@@ -110,12 +112,14 @@ public:
|
|||||||
virtual const NetPacketAvatarHeader *ToNetPacketAvatarHeader() const;
|
virtual const NetPacketAvatarHeader *ToNetPacketAvatarHeader() const;
|
||||||
virtual const NetPacketAvatarFile *ToNetPacketAvatarFile() const;
|
virtual const NetPacketAvatarFile *ToNetPacketAvatarFile() const;
|
||||||
virtual const NetPacketAvatarEnd *ToNetPacketAvatarEnd() const;
|
virtual const NetPacketAvatarEnd *ToNetPacketAvatarEnd() const;
|
||||||
|
virtual const NetPacketUnknownAvatar *ToNetPacketUnknownAvatar() const;
|
||||||
virtual const NetPacketGameListNew *ToNetPacketGameListNew() const;
|
virtual const NetPacketGameListNew *ToNetPacketGameListNew() const;
|
||||||
virtual const NetPacketGameListUpdate *ToNetPacketGameListUpdate() const;
|
virtual const NetPacketGameListUpdate *ToNetPacketGameListUpdate() const;
|
||||||
virtual const NetPacketGameListPlayerJoined *ToNetPacketGameListPlayerJoined() const;
|
virtual const NetPacketGameListPlayerJoined *ToNetPacketGameListPlayerJoined() const;
|
||||||
virtual const NetPacketGameListPlayerLeft *ToNetPacketGameListPlayerLeft() const;
|
virtual const NetPacketGameListPlayerLeft *ToNetPacketGameListPlayerLeft() const;
|
||||||
virtual const NetPacketRetrievePlayerInfo *ToNetPacketRetrievePlayerInfo() const;
|
virtual const NetPacketRetrievePlayerInfo *ToNetPacketRetrievePlayerInfo() const;
|
||||||
virtual const NetPacketPlayerInfo *ToNetPacketPlayerInfo() const;
|
virtual const NetPacketPlayerInfo *ToNetPacketPlayerInfo() const;
|
||||||
|
virtual const NetPacketUnknownPlayerId *ToNetPacketUnknownPlayerId() const;
|
||||||
virtual const NetPacketCreateGame *ToNetPacketCreateGame() const;
|
virtual const NetPacketCreateGame *ToNetPacketCreateGame() const;
|
||||||
virtual const NetPacketJoinGame *ToNetPacketJoinGame() const;
|
virtual const NetPacketJoinGame *ToNetPacketJoinGame() const;
|
||||||
virtual const NetPacketJoinGameAck *ToNetPacketJoinGameAck() const;
|
virtual const NetPacketJoinGameAck *ToNetPacketJoinGameAck() const;
|
||||||
@@ -311,6 +315,29 @@ protected:
|
|||||||
virtual void InternalCheck(const NetPacketHeader* data) const;
|
virtual void InternalCheck(const NetPacketHeader* data) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class NetPacketUnknownAvatar : public NetPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct Data
|
||||||
|
{
|
||||||
|
u_int32_t requestId;
|
||||||
|
};
|
||||||
|
|
||||||
|
NetPacketUnknownAvatar();
|
||||||
|
virtual ~NetPacketUnknownAvatar();
|
||||||
|
|
||||||
|
virtual boost::shared_ptr<NetPacket> Clone() const;
|
||||||
|
|
||||||
|
void SetData(const Data &inData);
|
||||||
|
void GetData(Data &outData) const;
|
||||||
|
|
||||||
|
virtual const NetPacketUnknownAvatar *ToNetPacketUnknownAvatar() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual void InternalCheck(const NetPacketHeader* data) const;
|
||||||
|
};
|
||||||
|
|
||||||
class NetPacketGameListNew : public NetPacket
|
class NetPacketGameListNew : public NetPacket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -454,6 +481,29 @@ protected:
|
|||||||
virtual void InternalCheck(const NetPacketHeader* data) const;
|
virtual void InternalCheck(const NetPacketHeader* data) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class NetPacketUnknownPlayerId : public NetPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct Data
|
||||||
|
{
|
||||||
|
u_int32_t playerId;
|
||||||
|
};
|
||||||
|
|
||||||
|
NetPacketUnknownPlayerId();
|
||||||
|
virtual ~NetPacketUnknownPlayerId();
|
||||||
|
|
||||||
|
virtual boost::shared_ptr<NetPacket> Clone() const;
|
||||||
|
|
||||||
|
void SetData(const Data &inData);
|
||||||
|
void GetData(Data &outData) const;
|
||||||
|
|
||||||
|
virtual const NetPacketUnknownPlayerId *ToNetPacketUnknownPlayerId() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual void InternalCheck(const NetPacketHeader* data) const;
|
||||||
|
};
|
||||||
|
|
||||||
class NetPacketCreateGame : public NetPacket
|
class NetPacketCreateGame : public NetPacket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
Reference in New Issue
Block a user