Moonlight-XboxOG latest
Moonlight Xbox OG is a port of the Moonlight Game Streaming client to the original Xbox console.
host_probe_result_queue.h
Go to the documentation of this file.
1
5#pragma once
6
7// standard includes
8#include <cstddef>
9#include <cstdint>
10#include <mutex>
11#include <string>
12#include <vector>
13
14// local includes
16
17namespace ui {
18
23 std::string address;
24 uint16_t port = 0;
25 bool success = false;
27 };
28
33 public:
38
39 private:
41 friend void begin_host_probe_result_round(HostProbeResultQueue *queue, std::size_t targetCount);
44 friend std::vector<HostProbeResult> drain_host_probe_results(HostProbeResultQueue *queue);
46
47 mutable std::mutex mutex_;
48 std::size_t targetCount_ = 0U;
49 std::size_t publishedCount_ = 0U;
50 std::vector<HostProbeResult> pendingResults_;
51 };
52
59
66 void begin_host_probe_result_round(HostProbeResultQueue *queue, std::size_t targetCount);
67
75
85
92 std::vector<HostProbeResult> drain_host_probe_results(HostProbeResultQueue *queue);
93
101
102} // namespace ui
Thread-safe queue used to publish per-host probe results back to the shell loop.
Definition host_probe_result_queue.h:32
friend std::vector< HostProbeResult > drain_host_probe_results(HostProbeResultQueue *queue)
Drain every probe result currently waiting in the queue.
Definition host_probe_result_queue.cpp:56
friend void publish_host_probe_result(HostProbeResultQueue *queue, HostProbeResult result)
Publish one completed host probe into the queue.
Definition host_probe_result_queue.cpp:35
friend bool host_probe_result_round_complete(const HostProbeResultQueue &queue)
Return whether the active probe round has published every expected result.
Definition host_probe_result_queue.cpp:67
friend void begin_host_probe_result_round(HostProbeResultQueue *queue, std::size_t targetCount)
Start a fresh probe round with a known number of expected results.
Definition host_probe_result_queue.cpp:24
HostProbeResultQueue()=default
Construct an empty probe result queue.
friend void skip_host_probe_result_target(HostProbeResultQueue *queue)
Remove one expected result from the active probe round.
Definition host_probe_result_queue.cpp:45
friend void reset_host_probe_result_queue(HostProbeResultQueue *queue)
Reset the queued probe results and counters for a queue.
Definition host_probe_result_queue.cpp:13
Declares host pairing helpers.
void begin_host_probe_result_round(HostProbeResultQueue *queue, std::size_t targetCount)
Start a fresh probe round with a known number of expected results.
Definition host_probe_result_queue.cpp:24
void reset_host_probe_result_queue(HostProbeResultQueue *queue)
Reset the queued probe results and counters for a queue.
Definition host_probe_result_queue.cpp:13
bool host_probe_result_round_complete(const HostProbeResultQueue &queue)
Return whether the active probe round has published every expected result.
Definition host_probe_result_queue.cpp:67
void skip_host_probe_result_target(HostProbeResultQueue *queue)
Remove one expected result from the active probe round.
Definition host_probe_result_queue.cpp:45
void publish_host_probe_result(HostProbeResultQueue *queue, HostProbeResult result)
Publish one completed host probe into the queue.
Definition host_probe_result_queue.cpp:35
std::vector< HostProbeResult > drain_host_probe_results(HostProbeResultQueue *queue)
Drain every probe result currently waiting in the queue.
Definition host_probe_result_queue.cpp:56
Parsed host status fields used by browsing and pairing flows.
Definition host_pairing.h:29
One completed saved-host reachability probe.
Definition host_probe_result_queue.h:22
std::string address
Saved host address that was probed.
Definition host_probe_result_queue.h:23
network::HostPairingServerInfo serverInfo
Parsed host status returned by the probe when available.
Definition host_probe_result_queue.h:26
uint16_t port
Effective host port used for the probe.
Definition host_probe_result_queue.h:24
bool success
True when the host responded to the probe.
Definition host_probe_result_queue.h:25