group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
DiscoveryServer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "SDL3_net/SDL_net.h"
4
5#include <atomic>
6#include <cstdint>
7#include <functional>
8#include <mutex>
9#include <string>
10#include <thread>
12{
13
14public:
16 {
17 std::string serverName;
18 uint16_t gamePort;
20 uint8_t maxPlayers;
21 uint32_t globalServerId = 0;
22
23 // other interesting things can go here
24 };
25
27 bool start(uint16_t port,
28 const ServerInfo& serverInfo,
29 std::function<uint8_t()> playerCountFn = nullptr,
30 std::function<uint32_t()> globalServerIdFn = nullptr);
31
32 void updateInfo(const ServerInfo& serverInfo);
33
34 void stop();
35
36private:
37 void loop();
38
39 NET_DatagramSocket* socket = nullptr;
40
41 std::atomic<bool> shouldStop{false};
42 std::thread broadcastThread;
43
45 std::mutex infoMutex;
46
47 std::function<uint8_t()> currentPlayersFn;
48 std::function<uint32_t()> globalServerIdFn;
49};
Definition DiscoveryServer.hpp:12
std::atomic< bool > shouldStop
Definition DiscoveryServer.hpp:41
NET_DatagramSocket * socket
Definition DiscoveryServer.hpp:39
void loop()
Definition DiscoveryServer.cpp:66
void updateInfo(const ServerInfo &serverInfo)
Definition DiscoveryServer.cpp:46
std::function< uint32_t()> globalServerIdFn
Definition DiscoveryServer.hpp:48
ServerInfo info
Definition DiscoveryServer.hpp:44
std::function< uint8_t()> currentPlayersFn
Definition DiscoveryServer.hpp:47
bool start(uint16_t port, const ServerInfo &serverInfo, std::function< uint8_t()> playerCountFn=nullptr, std::function< uint32_t()> globalServerIdFn=nullptr)
starts a thread that makes a UDP socket and broadcasts
Definition DiscoveryServer.cpp:22
std::thread broadcastThread
Definition DiscoveryServer.hpp:42
void stop()
Definition DiscoveryServer.cpp:52
std::mutex infoMutex
Definition DiscoveryServer.hpp:45
Definition DiscoveryServer.hpp:16
std::string serverName
Definition DiscoveryServer.hpp:17
uint8_t currentPlayers
Definition DiscoveryServer.hpp:19
uint32_t globalServerId
Definition DiscoveryServer.hpp:21
uint8_t maxPlayers
Definition DiscoveryServer.hpp:20
uint16_t gamePort
Definition DiscoveryServer.hpp:18