[refactor] use MiniRTC public APIs across clients

This commit is contained in:
dijunkun
2026-11-06 23:44:54 +08:00
parent 05782bce7c
commit a64a28a5a3
16 changed files with 121 additions and 86 deletions
@@ -8,7 +8,7 @@
#include <set>
#include <system_error>
#include "signal_server_address.h"
#include <minirtc.h>
#ifdef _WIN32
#include <windows.h>
@@ -53,12 +53,13 @@ void AnnouncementInbox::Configure(std::string host, int port,
std::lock_guard<std::mutex> lock(mutex_);
if (directory_.empty() || host.empty() || port <= 0 || device_id.empty())
return;
auto address = minirtc::ParseSignalServerAddress(host);
if (!address) return;
for (auto& ch : address->host)
MiniRtcSignalServerAddress address{};
if (ParseMiniRtcSignalServerAddress(host.data(), host.size(), &address) != 0) return;
std::string normalized_host(address.host);
for (auto& ch : normalized_host)
if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A';
if (address->host.back() == '.') address->host.pop_back();
host = address->Address();
if (normalized_host.back() == '.') normalized_host.pop_back();
host = normalized_host + address.target;
const auto scope = json::array({host, port, device_id}).dump();
if (scope_ == scope) return;
scope_ = scope;
@@ -5,7 +5,8 @@
#include <mutex>
#include <string_view>
#include "join_failure.h"
#include <minirtc.h>
#include <nlohmann/json.hpp>
namespace crossdesk {
@@ -18,7 +19,7 @@ class ConnectionAuthState {
bool password_required = false;
bool validating = false;
bool incorrect_password = false;
minirtc::JoinFailureKind error = minirtc::JoinFailureKind::Unknown;
MiniRtcJoinFailureKind error = MiniRtcJoinFailureKind::Unknown;
int retry_after = 0;
};
@@ -34,15 +35,16 @@ class ConnectionAuthState {
void Rejected(const nlohmann::json& reply,
Clock::time_point now = Clock::now()) {
const auto failure = minirtc::ParseJoinFailure(reply);
const auto message = reply.dump();
const auto failure = ParseMiniRtcJoinFailure(message.data(), message.size());
std::lock_guard lock(mutex_);
state_ = {};
state_.error = failure.kind;
state_.incorrect_password =
failure.kind == minirtc::JoinFailureKind::AuthenticationFailed;
failure.kind == MiniRtcJoinFailureKind::AuthenticationFailed;
state_.password_required =
state_.incorrect_password ||
failure.kind == minirtc::JoinFailureKind::PasswordRequired;
failure.kind == MiniRtcJoinFailureKind::PasswordRequired;
retry_at_ = now + std::chrono::seconds(failure.retry_after);
}