1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Network Layer 7 rework (Packet handling)

* Move networkcode to a dedicated directory
* Rename clientserver.h to network/networkprotocol.h (Better name) and sanitize some includes
* Create object NetworkPacket
  * It stores command (opcode) and data separated
  * It also stores peer_id
  * Data reading can be done by using a streaming interface
* Change packet routing analysis
  * Remove old conditional analysis
  * Now uses function pointed analysis and add connection state ({Client,Server}::handlers)
  * Connection state permit to categorize condition to handle before analyze packets
  * Create a handler for depreciated messages, instead of duplicating code
This commit is contained in:
Loic Blot 2015-01-12 17:01:41 +01:00 committed by Craig Robbins
parent 15c037614f
commit a704c04f00
20 changed files with 3519 additions and 2426 deletions

View file

@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "localplayer.h"
#include "hud.h"
#include "particles.h"
#include "network/toclientpacket.h"
struct MeshMakeData;
class MapBlockMesh;
@ -341,7 +342,57 @@ public:
*/
void step(float dtime);
/*
* Command Handlers
*/
void handleCommand(ToClientPacket* pkt);
void handleCommand_Null(ToClientPacket* pkt) {};
void handleCommand_Deprecated(ToClientPacket* pkt);
void handleCommand_Init(ToClientPacket* pkt);
void handleCommand_AccessDenied(ToClientPacket* pkt);
void handleCommand_RemoveNode(ToClientPacket* pkt);
void handleCommand_AddNode(ToClientPacket* pkt);
void handleCommand_BlockData(ToClientPacket* pkt);
void handleCommand_Inventory(ToClientPacket* pkt);
void handleCommand_TimeOfDay(ToClientPacket* pkt);
void handleCommand_ChatMessage(ToClientPacket* pkt);
void handleCommand_ActiveObjectRemoveAdd(ToClientPacket* pkt);
void handleCommand_ActiveObjectMessages(ToClientPacket* pkt);
void handleCommand_Movement(ToClientPacket* pkt);
void handleCommand_HP(ToClientPacket* pkt);
void handleCommand_Breath(ToClientPacket* pkt);
void handleCommand_MovePlayer(ToClientPacket* pkt);
void handleCommand_PlayerItem(ToClientPacket* pkt);
void handleCommand_DeathScreen(ToClientPacket* pkt);
void handleCommand_AnnounceMedia(ToClientPacket* pkt);
void handleCommand_Media(ToClientPacket* pkt);
void handleCommand_ToolDef(ToClientPacket* pkt);
void handleCommand_NodeDef(ToClientPacket* pkt);
void handleCommand_CraftItemDef(ToClientPacket* pkt);
void handleCommand_ItemDef(ToClientPacket* pkt);
void handleCommand_PlaySound(ToClientPacket* pkt);
void handleCommand_StopSound(ToClientPacket* pkt);
void handleCommand_Privileges(ToClientPacket* pkt);
void handleCommand_InventoryFormSpec(ToClientPacket* pkt);
void handleCommand_DetachedInventory(ToClientPacket* pkt);
void handleCommand_ShowFormSpec(ToClientPacket* pkt);
void handleCommand_SpawnParticle(ToClientPacket* pkt);
void handleCommand_AddParticleSpawner(ToClientPacket* pkt);
void handleCommand_DeleteParticleSpawner(ToClientPacket* pkt);
void handleCommand_HudAdd(ToClientPacket* pkt);
void handleCommand_HudRemove(ToClientPacket* pkt);
void handleCommand_HudChange(ToClientPacket* pkt);
void handleCommand_HudSetFlags(ToClientPacket* pkt);
void handleCommand_HudSetParam(ToClientPacket* pkt);
void handleCommand_HudSetSky(ToClientPacket* pkt);
void handleCommand_OverrideDayNightRatio(ToClientPacket* pkt);
void handleCommand_LocalPlayerAnimations(ToClientPacket* pkt);
void handleCommand_EyeOffset(ToClientPacket* pkt);
void ProcessData(u8 *data, u32 datasize, u16 sender_peer_id);
// Returns true if something was received
bool AsyncProcessPacket();
bool AsyncProcessData();
@ -577,4 +628,3 @@ private:
};
#endif // !CLIENT_HEADER