Skip to content

Commit 25d0247

Browse files
authored
Merge pull request #26 from PocketRelay/dedicated-test
Tunneling Support
2 parents d905c80 + 7eba795 commit 25d0247

File tree

6 files changed

+137
-105
lines changed

6 files changed

+137
-105
lines changed

Cargo.lock

Lines changed: 83 additions & 51 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pocket-relay-client"
3-
version = "0.3.2"
3+
version = "0.4.0"
44
edition = "2021"
55
build = "build.rs"
66
license = "MIT"
@@ -19,7 +19,7 @@ native = ["dep:native-windows-gui", "dep:native-windows-derive", "dep:futures"]
1919

2020
[dependencies]
2121
# Shared backing library
22-
pocket-relay-client-shared = { version = "0.1" }
22+
pocket-relay-client-shared = { version = "0.2" }
2323

2424
serde = { version = "1", features = ["derive"] }
2525
serde_json = "1"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Below are some quick download links to download the latest versions, the client
3131

3232
| Variant | Download Link |
3333
| ------- | --------------------------------------------------------------------------------------------------------- |
34-
| Normal | [Download](https://github.com/PocketRelay/Client/releases/latest/download/pocket-relay-client-native.exe) |
34+
| Normal | [Download](https://github.com/PocketRelay/Client/releases/latest/download/pocket-relay-client.exe) |
3535
| Native | [Download](https://github.com/PocketRelay/Client/releases/latest/download/pocket-relay-client-native.exe) |
3636

3737

src/servers.rs

Lines changed: 30 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,46 @@
11
use crate::{
2-
core::{reqwest, servers::*, Url},
2+
core::{ctx::ClientContext, servers::*},
33
ui::show_error,
44
};
55
use log::error;
6-
use std::sync::Arc;
6+
use std::{future::Future, sync::Arc};
77

88
/// Starts all the servers in their own tasks
99
///
1010
/// ## Arguments
11-
/// * `http_client` - The HTTP client to use on the servers
12-
/// * `base_url` - The base URL of the connected server
13-
pub fn start_all_servers(http_client: reqwest::Client, base_url: Arc<Url>) {
11+
/// * `ctx` - The client context
12+
pub fn start_all_servers(ctx: Arc<ClientContext>) {
1413
// Stop existing servers and tasks if they are running
1514
stop_server_tasks();
1615

17-
// Spawn the Redirector server
18-
spawn_server_task(async move {
19-
if let Err(err) = redirector::start_redirector_server().await {
20-
show_error("Failed to start redirector server", &err.to_string());
21-
error!("Failed to start redirector server: {}", err);
22-
}
23-
});
24-
25-
// Need to copy the client and base_url so it can be moved into the task
26-
let (a, b) = (http_client.clone(), base_url.clone());
27-
28-
// Spawn the Blaze server
29-
spawn_server_task(async move {
30-
if let Err(err) = blaze::start_blaze_server(a, b).await {
31-
show_error("Failed to start blaze server", &err.to_string());
32-
error!("Failed to start blaze server: {}", err);
33-
}
34-
});
35-
36-
// Need to copy the client and base_url so it can be moved into the task
37-
let (a, b) = (http_client.clone(), base_url.clone());
38-
39-
// Spawn the HTTP server
40-
spawn_server_task(async move {
41-
if let Err(err) = http::start_http_server(a, b).await {
42-
show_error("Failed to start http server", &err.to_string());
43-
error!("Failed to start http server: {}", err);
44-
}
45-
});
46-
47-
// Spawn the QoS server
48-
spawn_server_task(async move {
49-
if let Err(err) = qos::start_qos_server().await {
50-
show_error("Failed to start qos server", &err.to_string());
51-
error!("Failed to start qos server: {}", err);
52-
}
53-
});
16+
// Create server tasks
17+
let redirector = redirector::start_redirector_server();
18+
let blaze = blaze::start_blaze_server(ctx.clone());
19+
let http = http::start_http_server(ctx.clone());
20+
let tunnel = tunnel::start_tunnel_server(ctx.clone());
21+
let qos = qos::start_qos_server();
22+
let telemetry = telemetry::start_telemetry_server(ctx);
23+
24+
// Spawn server tasks
25+
run_server(redirector, "redirector");
26+
run_server(blaze, "blaze");
27+
run_server(http, "http");
28+
run_server(tunnel, "tunnel");
29+
run_server(qos, "qos");
30+
run_server(telemetry, "telemetry");
31+
}
5432

55-
// Spawn the telemetry server
33+
/// Runs the provided server `future` in a background task displaying
34+
/// and logging any errors if they occur
35+
#[inline]
36+
pub fn run_server<F>(future: F, name: &'static str)
37+
where
38+
F: Future<Output = std::io::Result<()>> + Send + 'static,
39+
{
5640
spawn_server_task(async move {
57-
if let Err(err) = telemetry::start_telemetry_server(http_client, base_url).await {
58-
show_error("Failed to start telemetry server", &err.to_string());
59-
error!("Failed to start telemetry server: {}", err);
41+
if let Err(err) = future.await {
42+
show_error(&format!("Failed to start {name} server"), &err.to_string());
43+
error!("Failed to start {name} server: {err}");
6044
}
6145
});
6246
}

0 commit comments

Comments
 (0)