R-Type
R-Type project
Transport.hpp
1 #pragma once
2 
3 #include "ArraySegment.hpp"
4 #include "Platform.hpp"
5 #include "KapMirror/Experimental/Core/Action.hpp"
6 #include <functional>
7 #include <memory>
8 
9 namespace KapMirror {
10  class Transport {
11  public:
12  virtual ~Transport() = default;
13 
18  virtual bool clientConnected() = 0;
19 
25  virtual void clientConnect(const std::string& ip, int port) = 0;
26 
30  virtual void clientDisconnect() = 0;
31 
36  virtual void clientSend(const std::shared_ptr<ArraySegment<byte>>& data) = 0;
37 
41  virtual void clientEarlyUpdate() = 0;
42 
47  virtual void serverStart(int port) = 0;
48 
52  virtual void serverStop() = 0;
53 
59  virtual void serverSend(int connectionId, const std::shared_ptr<ArraySegment<byte>>& data) = 0;
60 
65  virtual void serverDisconnect(int connectionId) = 0;
66 
70  virtual void serverEarlyUpdate() = 0;
71 
72  public:
73  static std::shared_ptr<Transport> activeTransport;
74 
75  Experimental::Action<void(Transport&)> onClientConnected;
76  Experimental::Action<void(Transport&)> onClientDisconnected;
77  Experimental::Action<void(Transport&, const std::shared_ptr<ArraySegment<byte>>&)> onClientDataReceived;
78  Experimental::Action<void(Transport&, const std::shared_ptr<ArraySegment<byte>>&)> onClientDataSent;
79 
80  Experimental::Action<void(Transport&, int)> onServerConnected;
81  Experimental::Action<void(Transport&, int)> onServerDisconnected;
82  Experimental::Action<void(Transport&, int, const std::shared_ptr<ArraySegment<byte>>&)> onServerDataReceived;
83  Experimental::Action<void(Transport&, int, const std::shared_ptr<ArraySegment<byte>>&)> onServerDataSent;
84  };
85 } // namespace KapMirror
KapMirror::Transport::serverSend
virtual void serverSend(int connectionId, const std::shared_ptr< ArraySegment< byte >> &data)=0
Send data to the client.
KapMirror::Transport
Definition: Transport.hpp:10
KapMirror::Transport::clientSend
virtual void clientSend(const std::shared_ptr< ArraySegment< byte >> &data)=0
Send data to the server.
KapMirror::Transport::serverStart
virtual void serverStart(int port)=0
Start the server and listen the port.
KapMirror::Transport::clientConnected
virtual bool clientConnected()=0
Client is connected to the server.
KapMirror::Transport::serverStop
virtual void serverStop()=0
Stop the server.
KapMirror::Transport::clientDisconnect
virtual void clientDisconnect()=0
Disconnect the client from the server.
KapMirror::Transport::serverEarlyUpdate
virtual void serverEarlyUpdate()=0
Server Update (call this function every frame)
KapMirror::Transport::serverDisconnect
virtual void serverDisconnect(int connectionId)=0
Disconnect the connection.
KapMirror::Transport::clientConnect
virtual void clientConnect(const std::string &ip, int port)=0
Connect the client to the server.
KapMirror::Transport::clientEarlyUpdate
virtual void clientEarlyUpdate()=0
Client Update (call this function every frame)
KapMirror::ArraySegment
Definition: ArraySegment.hpp:9
KapMirror::Experimental::Action
Definition: Action.hpp:10