Wrath of Zeus
Made by Torchlight Games for CSE 125 SP24
Loading...
Searching...
No Matches
lobbyfinder.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <boost/asio/io_context.hpp>
4#include <boost/asio/ip/udp.hpp>
5
6#include <array>
7#include <unordered_map>
8#include <thread>
9#include <atomic>
10#include <mutex>
11
14
15using namespace boost::asio::ip;
16
17using Lobbies = std::unordered_map<udp::endpoint, ServerLobbyBroadcastPacket>;
18
24public:
28 LobbyFinder(boost::asio::io_context& io_context, const GameConfig& config);
29
34
38 void startSearching();
39
45 void stopSearching();
46
53
54private:
59 void _searchForLobbyWorker();
60
62 std::thread worker_thread;
64 std::atomic_bool keep_searching;
65
67 udp::socket lobby_discovery_socket;
69 std::array<char, 512> lobby_info_buf;
71 udp::endpoint endpoint_buf;
72
74 std::mutex mut;
76 Lobbies lobbies_avail;
77};
Definition: lobbyfinder.hpp:23
~LobbyFinder()
Definition: lobbyfinder.cpp:21
Lobbies getFoundLobbies()
Definition: lobbyfinder.cpp:75
void startSearching()
Definition: lobbyfinder.cpp:31
void stopSearching()
Definition: lobbyfinder.cpp:36
std::unordered_map< udp::endpoint, ServerLobbyBroadcastPacket > Lobbies
Definition: lobbyfinder.hpp:17
Definition: config.hpp:12