Skip to content

Commit fac8068

Browse files
Split serverloop into sync and async version
1 parent a8ebc77 commit fac8068

File tree

10 files changed

+1422
-715
lines changed

10 files changed

+1422
-715
lines changed

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ log = "0.4.17"
1515
num-traits = "0.2.15"
1616
num-derive = "0.3.3"
1717
rusb = "0.9.1"
18+
async-trait = "0.1.73"
19+
async-scoped = { version = "0.7.1", features = ["use-tokio"] }
1820

1921
[dev-dependencies]
2022
tokio = { version = "1.22.0", features = ["full"] }

examples/cdc_acm_serial.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ use std::net::*;
33
use std::sync::{Arc, Mutex};
44
use std::time::Duration;
55

6+
use usbip::server::*;
7+
68
#[tokio::main]
79
async fn main() {
810
env_logger::init();
911
let handler =
1012
Arc::new(Mutex::new(Box::new(usbip::cdc::UsbCdcAcmHandler::new())
1113
as Box<dyn usbip::UsbInterfaceHandler + Send>));
12-
let server = Arc::new(usbip::UsbIpServer::new_simulated(vec![
14+
let server = SyncUsbIpServer::new_simulated(vec![
1315
usbip::UsbDevice::new(0).with_interface(
1416
usbip::ClassCode::CDC as u8,
1517
usbip::cdc::CDC_ACM_SUBCLASS,
@@ -18,9 +20,9 @@ async fn main() {
1820
usbip::cdc::UsbCdcAcmHandler::endpoints(),
1921
handler.clone(),
2022
),
21-
]));
23+
]);
2224
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 3240);
23-
tokio::spawn(usbip::server(addr, server));
25+
tokio::spawn(server.serve(addr));
2426

2527
loop {
2628
// sleep 1s

examples/hid_keyboard.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ use std::net::*;
33
use std::sync::{Arc, Mutex};
44
use std::time::Duration;
55

6+
use usbip::server::*;
7+
68
#[tokio::main]
79
async fn main() {
810
env_logger::init();
911
let handler = Arc::new(Mutex::new(
1012
Box::new(usbip::hid::UsbHidKeyboardHandler::new_keyboard())
1113
as Box<dyn usbip::UsbInterfaceHandler + Send>,
1214
));
13-
let server = Arc::new(usbip::UsbIpServer::new_simulated(vec![
15+
let server = SyncUsbIpServer::new_simulated(vec![
1416
usbip::UsbDevice::new(0).with_interface(
1517
usbip::ClassCode::HID as u8,
1618
0x00,
@@ -24,9 +26,9 @@ async fn main() {
2426
}],
2527
handler.clone(),
2628
),
27-
]));
29+
]);
2830
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 3240);
29-
tokio::spawn(usbip::server(addr, server));
31+
tokio::spawn(server.serve(addr));
3032

3133
loop {
3234
// sleep 1s

examples/host.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
use std::net::*;
2-
use std::sync::Arc;
2+
33
use std::time::Duration;
44

5+
use usbip::server::*;
6+
57
#[tokio::main]
68
async fn main() {
79
env_logger::init();
8-
let server = Arc::new(usbip::UsbIpServer::new_from_host());
10+
let server = usbip::server::SyncUsbIpServer::new_from_host();
911
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 3240);
10-
tokio::spawn(usbip::server(addr, server));
12+
tokio::spawn(server.serve(addr));
1113

1214
loop {
1315
// sleep 1s

0 commit comments

Comments
 (0)