mirror of
https://github.com/Swordpdf/ProsperoEden.git
synced 2026-10-18 19:59:46 -05:00
* Validate Eden room packets and add offline interoperability checks * Bound proxy decompression and receive queues * Add asynchronous room controller and cancellable connections * Wire room settings and lifecycle into the launcher * Bound outgoing room queues and test stalled peers * Own room receive callbacks per proxy socket * Support proxy polling and release sockets between games * Retain guest sockets across descriptor changes * Record offline qualification and freeze fresh candidates * Record room server and read-only console preflight evidence * Show room members and reported games in a scrollable list * Document Tailscale capabilities and verify room rejection recovery * Record remaining hardware validation prerequisites * Record successful room transport over Tailscale * Record verified console deployment for operator testing * Use a supported keyboard type for masked password entry * Remember room passwords and report connection failures * Report ENet handshake errors and packet counts * Parse numeric room addresses before invoking the resolver * Record operator-confirmed PS5 room connection * Use the room virtual interface for guest wireless networking * Compose room interfaces with the native getifaddrs adaptation * Exercise LDN discovery and peer connection through a real room * Record PS5 Mario Kart wireless lobby validation * Record live LDN traffic, recovery and Tailscale component validation * Prepare official desktop reference and correct room interface guidance * Record public room connection and native DNS failure * Show multiplayer connection status on home and settings * Make external Tailscale qualification optional * Invalidate network compiler cache for generated room headers * Use the pinned Boost version in multiplayer host checks * Show room server ping in the game overlay * Record verified ping overlay deployment to PS5 * Respect detailed logging settings for multiplayer diagnostics * Make the room socket non-blocking on the console so the member loop can send the join request * Add public room browser beside private multiplayer connection * Keep multiplayer destination choice selectable while connected * Record local public browser validation and deferred console test * Explain multiplayer connection failures in a persistent UI panel * Define idle-only multiplayer validation on console .40 * Record console .40 public directory and private room validation * Update public room notes for PR publication * Keep the saved private room on public joins, save the private form as typed, and harden the public room list * Translate the multiplayer and public room texts in all 29 languages
29 lines
748 B
C++
29 lines
748 B
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
#pragma once
|
|
#include <cassert>
|
|
#include <cstddef>
|
|
#include "multiplayer_validation.h"
|
|
|
|
namespace Eden::Multiplayer {
|
|
// Used under the send-list mutex or solely by ENet's owning thread.
|
|
class RoomSendBudget {
|
|
public:
|
|
bool Add(std::size_t size) {
|
|
if (size > MaxRoomPacketBytes || count == 1024 || size > 4 * MaxRoomPacketBytes - bytes)
|
|
return false;
|
|
bytes += size;
|
|
++count;
|
|
return true;
|
|
}
|
|
void Release(std::size_t size) {
|
|
assert(count && size <= bytes);
|
|
--count;
|
|
bytes -= size;
|
|
}
|
|
void Reset() { bytes = count = 0; }
|
|
private:
|
|
std::size_t bytes = 0;
|
|
std::size_t count = 0;
|
|
};
|
|
} // namespace Eden::Multiplayer
|