r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
INetworkClient.hpp
Go to the documentation of this file.
1///
2/// @file INetworkClient.hpp
3/// @brief This file contains the client network interface
4/// @namespace eng
5///
6
7#pragma once
8
9#include <cstdint>
10#include <functional>
11#include <string>
12#include <vector>
13
16
17namespace eng
18{
19
20 ///
21 /// @class INetworkClient
22 /// @brief Interface for the client network
23 /// @namespace eng
24 ///
26 {
27 public:
28 using PacketHandler = std::function<void(const rnp::PacketHeader &, const std::vector<uint8_t> &)>;
29
30 virtual ~INetworkClient() = default;
31
32 // Connection management
33 virtual void connect(const std::string &host, uint16_t port) = 0;
34 virtual void disconnect() = 0;
35
36 // Protocol messages
37 virtual void sendConnect(const std::string &playerName) = 0;
38 virtual void sendConnectWithCaps(const std::string &playerName, std::uint32_t clientCaps) = 0;
39 virtual void sendDisconnect() = 0;
40 virtual void sendDisconnect(rnp::DisconnectReason reason) = 0;
41 virtual void sendPlayerInput(uint8_t direction, uint8_t shooting) = 0;
42 virtual void sendPlayerInputAsEvent(std::uint16_t playerId, uint8_t direction, uint8_t shooting,
43 uint32_t clientTimeMs) = 0;
44 virtual void sendPing() = 0;
45 virtual void sendPing(std::uint32_t nonce, std::uint32_t sendTimeMs) = 0;
46 virtual void sendAck(std::uint32_t cumulative, std::uint32_t ackBits) = 0;
47
48 // Handler management
49 virtual void setPacketHandler(rnp::PacketType type, PacketHandler handler) = 0;
50 virtual void setEventsHandler(std::function<void(const std::vector<rnp::EventRecord> &)> handler) = 0;
51
52 // Getters
53 virtual std::uint32_t getSessionId() const = 0;
54 virtual std::uint16_t getServerTickRate() const = 0;
55
56 private:
57 }; // class INetworkClient
58
59} // namespace eng
This file contains the plugin interface.
This file contains the network protocol.
Interface for the client network.
virtual void setEventsHandler(std::function< void(const std::vector< rnp::EventRecord > &)> handler)=0
virtual void setPacketHandler(rnp::PacketType type, PacketHandler handler)=0
virtual void sendPlayerInputAsEvent(std::uint16_t playerId, uint8_t direction, uint8_t shooting, uint32_t clientTimeMs)=0
virtual void sendDisconnect(rnp::DisconnectReason reason)=0
virtual ~INetworkClient()=default
virtual std::uint16_t getServerTickRate() const =0
virtual void sendPlayerInput(uint8_t direction, uint8_t shooting)=0
virtual void connect(const std::string &host, uint16_t port)=0
virtual void disconnect()=0
virtual void sendDisconnect()=0
std::function< void(const rnp::PacketHeader &, const std::vector< uint8_t > &)> PacketHandler
virtual std::uint32_t getSessionId() const =0
virtual void sendAck(std::uint32_t cumulative, std::uint32_t ackBits)=0
virtual void sendConnectWithCaps(const std::string &playerName, std::uint32_t clientCaps)=0
virtual void sendPing(std::uint32_t nonce, std::uint32_t sendTimeMs)=0
virtual void sendPing()=0
virtual void sendConnect(const std::string &playerName)=0
Interface for plugins.
Definition IPlugin.hpp:29
DisconnectReason
Disconnect reason codes.
Definition Protocol.hpp:53
PacketType
Packet types according to RNP specification.
Definition Protocol.hpp:24
Packet header according to RNP specification (Big Endian) Total size: 16 bytes.
Definition Protocol.hpp:115