Nebula
Loading...
Searching...
No Matches
basemultiplayerserver.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
9#include "core/refcounted.h"
10#include "clientconnection.h"
11#include "GameNetworkingSockets/steam/steamnetworkingtypes.h"
12#include "timing/timer.h"
13
14class ISteamNetworkingSockets;
15
16//------------------------------------------------------------------------------
17namespace Multiplayer
18{
20{
21public:
25 virtual ~BaseMultiplayerServer();
27 virtual bool Open();
29 virtual void Close();
31 bool IsOpen() const;
33 void Broadcast(void* buf, int size);
34
36 virtual bool OnClientIsConnecting(ClientConnection* connection);
38 virtual void OnClientConnected(ClientConnection* connection);
40 virtual void OnClientDisconnected(ClientConnection* connection);
42 virtual void OnMessageReceived(ClientConnection* connection, Timing::Time recvTime, byte* data, size_t size);
43
45 virtual void OnFrame();
47 virtual void OnTick();
48
52 void SetTickInterval(Timing::Time interval);
53
56
58 void SyncAll();
59
61 void OnNetConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t* info);
62
64
65protected:
68 void AddClientConnection(ClientConnection* connection);
69
72
73 bool isOpen;
75
76 ISteamNetworkingSockets* netInterface;
77 HSteamListenSocket listenSock;
78 HSteamNetPollGroup pollGroups[(int)ClientGroup::NumClientGroups];
81
82 Timing::Timer tickTimer;
84};
85
86//------------------------------------------------------------------------------
89inline bool
91{
92 return this->isOpen;
93}
94
95//--------------------------------------------------------------------------
98inline Timing::Time
100{
101 return this->tickInterval;
102}
103
104//--------------------------------------------------------------------------
107inline void
109{
110 this->tickInterval = interval;
111}
112
113} // namespace Multiplayer
114//------------------------------------------------------------------------------
void PollConnectionChanges()
Definition basemultiplayerserver.cc:469
virtual void OnFrame()
Called every "frame".
Definition basemultiplayerserver.cc:387
void SyncAll()
Checks for connection changes, polls messages and calls OnFrame/OnTick.
Definition basemultiplayerserver.cc:396
void OnNetConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t *info)
Used internally by GameNetworkingSockets at connection status changes.
Definition basemultiplayerserver.cc:246
virtual void OnMessageReceived(ClientConnection *connection, Timing::Time recvTime, byte *data, size_t size)
Called when a message has been received from a client.
Definition basemultiplayerserver.cc:237
void SetTickInterval(Timing::Time interval)
Sets the interval (seconds) between ticks.
Definition basemultiplayerserver.h:108
Timing::Time pollGroupIntervals[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:80
Timing::Timer pollGroupTimers[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:79
virtual void Close()
close the server
Definition basemultiplayerserver.cc:137
void AddClientConnection(ClientConnection *connection)
add a client connection (called by the listener thread)
Definition basemultiplayerserver.cc:164
void Broadcast(void *buf, int size)
broadcast message to all clients
Definition basemultiplayerserver.cc:174
void PollIncomingMessages()
Definition basemultiplayerserver.cc:422
HSteamNetPollGroup pollGroups[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:78
void SetClientGroupPollInterval(ClientGroup group, Timing::Time msBetweenTicks)
bool isOpen
Definition basemultiplayerserver.h:73
Util::HashTable< HSteamNetConnection, ClientConnection *, 128 > clientConnections
Definition basemultiplayerserver.h:74
Timing::Time GetTickInterval() const
Returns the interval between ticks, in seconds.
Definition basemultiplayerserver.h:99
Timing::Timer tickTimer
Definition basemultiplayerserver.h:82
SizeT maxMessagesPerFrame
Definition basemultiplayerserver.h:63
friend ClientConnection
Definition basemultiplayerserver.h:66
virtual bool OnClientIsConnecting(ClientConnection *connection)
Called when client is trying to connect. Override and return true if the connection should be accepte...
Definition basemultiplayerserver.cc:209
ISteamNetworkingSockets * netInterface
Definition basemultiplayerserver.h:76
virtual void OnClientConnected(ClientConnection *connection)
Called when client has successfully connected to the server.
Definition basemultiplayerserver.cc:219
BaseMultiplayerServer()
constructor
Definition basemultiplayerserver.cc:42
bool IsOpen() const
return true if server is open
Definition basemultiplayerserver.h:90
virtual void OnClientDisconnected(ClientConnection *connection)
Called when client has disconnected from the server.
Definition basemultiplayerserver.cc:228
virtual ~BaseMultiplayerServer()
destructor
Definition basemultiplayerserver.cc:56
virtual bool Open()
open the server
Definition basemultiplayerserver.cc:65
Timing::Time tickInterval
Definition basemultiplayerserver.h:83
HSteamListenSocket listenSock
Definition basemultiplayerserver.h:77
virtual void OnTick()
Called every tickInterval seconds, after OnFrame.
Definition basemultiplayerserver.cc:378
Organizes key/value pairs by a hash code.
Definition hashtable.h:42
Definition basemultiplayerclient.cc:24
ClientGroup
Clients can be bucketet into client groups that can be polled at differing rates.
Definition clientconnection.h:23
@ NumClientGroups
Definition clientconnection.h:28
double Time
the time datatype
Definition time.h:18
int SizeT
Definition types.h:40