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;
35 void Broadcast(void* buf, int size);
36
38 virtual bool OnClientIsConnecting(ClientConnection* connection);
40 virtual void OnClientConnected(ClientConnection* connection);
42 virtual void OnClientDisconnected(ClientConnection* connection);
44 virtual void OnMessageReceived(ClientConnection* connection, Timing::Time recvTime, byte* data, size_t size);
45
47 virtual void OnFrame();
49 virtual void OnTick();
50
54 void SetTickInterval(Timing::Time interval);
55
58
60 void SyncAll();
61
63 void OnNetConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t* info);
64
66
67protected:
70 void AddClientConnection(ClientConnection* connection);
71
74
75 bool isOpen;
77
78 ISteamNetworkingSockets* netInterface;
79 HSteamListenSocket listenSock;
80 HSteamNetPollGroup pollGroups[(int)ClientGroup::NumClientGroups];
83
84 Timing::Timer tickTimer;
86};
87
88//------------------------------------------------------------------------------
91inline bool
93{
94 return this->isOpen;
95}
96
97//--------------------------------------------------------------------------
100inline Timing::Time
102{
103 return this->tickInterval;
104}
105
106//--------------------------------------------------------------------------
109inline void
111{
112 this->tickInterval = interval;
113}
114
115} // namespace Multiplayer
116//------------------------------------------------------------------------------
void DrawNetworkDebugInfo()
draw imgui network debug information
Definition basemultiplayerserver.cc:187
void PollConnectionChanges()
Definition basemultiplayerserver.cc:468
virtual void OnFrame()
Called every "frame".
Definition basemultiplayerserver.cc:386
void SyncAll()
Checks for connection changes, polls messages and calls OnFrame/OnTick.
Definition basemultiplayerserver.cc:395
void OnNetConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t *info)
Used internally by GameNetworkingSockets at connection status changes.
Definition basemultiplayerserver.cc:245
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:236
void SetTickInterval(Timing::Time interval)
Sets the interval (seconds) between ticks.
Definition basemultiplayerserver.h:110
Timing::Time pollGroupIntervals[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:82
Timing::Timer pollGroupTimers[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:81
virtual void Close()
close the server
Definition basemultiplayerserver.cc:115
void AddClientConnection(ClientConnection *connection)
add a client connection (called by the listener thread)
Definition basemultiplayerserver.cc:142
void Broadcast(void *buf, int size)
broadcast message to all clients
Definition basemultiplayerserver.cc:152
void PollIncomingMessages()
Definition basemultiplayerserver.cc:421
HSteamNetPollGroup pollGroups[(int) ClientGroup::NumClientGroups]
Definition basemultiplayerserver.h:80
void SetClientGroupPollInterval(ClientGroup group, Timing::Time msBetweenTicks)
bool isOpen
Definition basemultiplayerserver.h:75
Util::HashTable< HSteamNetConnection, ClientConnection *, 128 > clientConnections
Definition basemultiplayerserver.h:76
Timing::Time GetTickInterval() const
Returns the interval between ticks, in seconds.
Definition basemultiplayerserver.h:101
Timing::Timer tickTimer
Definition basemultiplayerserver.h:84
SizeT maxMessagesPerFrame
Definition basemultiplayerserver.h:65
friend ClientConnection
Definition basemultiplayerserver.h:68
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:208
ISteamNetworkingSockets * netInterface
Definition basemultiplayerserver.h:78
virtual void OnClientConnected(ClientConnection *connection)
Called when client has successfully connected to the server.
Definition basemultiplayerserver.cc:218
BaseMultiplayerServer()
constructor
Definition basemultiplayerserver.cc:43
bool IsOpen() const
return true if server is open
Definition basemultiplayerserver.h:92
virtual void OnClientDisconnected(ClientConnection *connection)
Called when client has disconnected from the server.
Definition basemultiplayerserver.cc:227
virtual ~BaseMultiplayerServer()
destructor
Definition basemultiplayerserver.cc:57
virtual bool Open()
open the server
Definition basemultiplayerserver.cc:66
Timing::Time tickInterval
Definition basemultiplayerserver.h:85
HSteamListenSocket listenSock
Definition basemultiplayerserver.h:79
virtual void OnTick()
Called every tickInterval seconds, after OnFrame.
Definition basemultiplayerserver.cc:377
Organizes key/value pairs by a hash code.
Definition hashtable.h:42
Definition basemultiplayerclient.cc:25
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:42