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
44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
// Exercise native parameter construction against the system dialog's password/type rule.
|
|
#define PS5_NATIVE
|
|
#include "system_keyboard.cpp"
|
|
#include <cassert>
|
|
|
|
static int expected_type;
|
|
static bool expected_password;
|
|
extern "C" {
|
|
int sceSysmoduleLoadModule(std::uint16_t) { return 0; }
|
|
int sceCommonDialogInitialize() { return 0; }
|
|
int sceUserServiceGetForegroundUser(std::int32_t* user) { *user = 1; return 0; }
|
|
int sceImeDialogInit(const ImeParam* param, const void*) {
|
|
assert(param->type == expected_type);
|
|
assert(bool(param->option & 4) == expected_password);
|
|
if ((param->option & 4) && param->type != 1 && param->type != 4)
|
|
return static_cast<int>(0x80bc0030u);
|
|
assert(param->max_text_length == 128);
|
|
assert(param->input_text_buffer[0] == u't');
|
|
return 0;
|
|
}
|
|
int sceImeDialogGetStatus() { return 2; }
|
|
int sceImeDialogGetResult(ImeResult* result) { result->outcome = 0; return 0; }
|
|
int sceImeDialogTerm() { return 0; }
|
|
int sceImeDialogAbort() { return 0; }
|
|
}
|
|
|
|
int main() {
|
|
std::atomic<bool> stop{};
|
|
for (bool password : {false, true}) {
|
|
for (bool numbers : {false, true}) {
|
|
Eden::TextRequest request;
|
|
request.initial = u"test";
|
|
request.max_length = 128;
|
|
request.password = expected_password = password;
|
|
request.numbers = numbers;
|
|
expected_type = numbers ? 4 : password ? 1 : 0;
|
|
const auto answer = Eden::AskSystemKeyboard(request, stop);
|
|
assert(answer.outcome == Eden::TextOutcome::accepted);
|
|
assert(answer.text == request.initial);
|
|
}
|
|
}
|
|
}
|