ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use anyhow::Result;
|
|
use dosh::server::{DoshServer, DoshServerConfig, DoshServerEvent};
|
|
use dosh::transport::{SessionEvent, TransportEvent};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
let config = DoshServerConfig::default().service("echo")?;
|
|
let mut server = DoshServer::bind(config).await?;
|
|
eprintln!("listening on {}", server.local_addr()?);
|
|
|
|
loop {
|
|
match server.recv().await? {
|
|
DoshServerEvent::Accepted(client) => {
|
|
eprintln!(
|
|
"accepted user={} session={} conn={:?}",
|
|
client.user, client.session, client.conn_id
|
|
);
|
|
}
|
|
DoshServerEvent::Disconnected(client) => {
|
|
eprintln!("disconnected conn={:?}", client.conn_id);
|
|
}
|
|
DoshServerEvent::Session {
|
|
conn_id,
|
|
event: SessionEvent::Stream(TransportEvent::Open(open)),
|
|
} => {
|
|
server.accept_stream(conn_id, open.stream_id).await?;
|
|
}
|
|
DoshServerEvent::Session {
|
|
conn_id,
|
|
event: SessionEvent::Stream(TransportEvent::Data(data)),
|
|
} => {
|
|
for chunk in data.chunks {
|
|
server.send(conn_id, data.stream_id, chunk).await?;
|
|
}
|
|
}
|
|
DoshServerEvent::Session { .. } | DoshServerEvent::Ignored => {}
|
|
}
|
|
server.maintenance().await?;
|
|
}
|
|
}
|