19 bool InitServer(
const u16 port,
const u32 maxPeers = 64,
const u32 channels = 1,
const u32 timeoutMs = 0);
20 bool InitClient(
const u32 channels = 1,
const u32 timeoutMs = 0);
23 Peer Connect(
const Address& address,
const u32 data = 0);
24 void Disconnect(
const PeerId peerId,
const u32 data = 0);
26 void Send(
const PeerId peerId, std::vector<u8>& data,
const ChannelId channel = 0,
const bool reliable =
true);
28 std::queue<NetworkEvent> Poll();
30 Peer GetPeer(
const PeerId peerId);
31 const std::unordered_map<PeerId, Peer>& GetPeers();
35 void Loop(
const u32 timeoutMs = 0);
45 NetworkCore m_networkCore;
46 std::atomic<bool> m_running;
50 moodycamel::ConcurrentQueue<std::pair<Address, u32>> m_connectQueue;
51 moodycamel::BlockingConcurrentQueue<Peer> m_connectReturnQueue;
52 moodycamel::ConcurrentQueue<SendData> m_sendQueue;
53 moodycamel::ConcurrentQueue<std::queue<NetworkEvent>> m_eventQueue;
54 moodycamel::ConcurrentQueue<std::pair<PeerId, u32>> m_disconnectQueue;
55 moodycamel::ConcurrentQueue<PeerId> m_peerIdQueue;
56 moodycamel::BlockingConcurrentQueue<Peer> m_peersQueue;
58 std::atomic<bool> m_peerMapRequest =
false;
59 moodycamel::BlockingConcurrentQueue<const std::unordered_map<PeerId, Peer>*> m_peerMapQueue;