generics!!
This commit is contained in:
parent
d35d4ee0c1
commit
31ec42bf3a
|
@ -5,7 +5,7 @@ extern crate tokio;
|
||||||
extern crate thiserror;
|
extern crate thiserror;
|
||||||
|
|
||||||
use hptp::log::Logger;
|
use hptp::log::Logger;
|
||||||
use tokio::io::{AsyncWriteExt, Stdout};
|
use tokio::io::AsyncWrite;
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
|
@ -44,7 +44,11 @@ async fn start(log: &mut Logger) -> Result<(), Error> {
|
||||||
download(log, sock, tokio::io::stdout()).await
|
download(log, sock, tokio::io::stdout()).await
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn download(log: &mut Logger, mut sock: UdpSocket, mut out: Stdout) -> Result<(), Error> {
|
async fn download<OUT>(log: &mut Logger, mut sock: UdpSocket, mut out: OUT) -> Result<(), Error>
|
||||||
|
where
|
||||||
|
OUT: AsyncWrite + Unpin,
|
||||||
|
{
|
||||||
|
use tokio::io::AsyncWriteExt;
|
||||||
let mut buf = [0u8; 2000];
|
let mut buf = [0u8; 2000];
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
loop {
|
loop {
|
||||||
|
|
|
@ -6,7 +6,7 @@ extern crate thiserror;
|
||||||
|
|
||||||
use hptp::log::Logger;
|
use hptp::log::Logger;
|
||||||
use std::net::SocketAddrV4;
|
use std::net::SocketAddrV4;
|
||||||
use tokio::io::{AsyncReadExt, Stdin};
|
use tokio::io::AsyncRead;
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
|
@ -54,9 +54,7 @@ async fn start(log: &mut Logger) -> Result<(), Error> {
|
||||||
.map_err(|_| Error::NoAvailPort)?;
|
.map_err(|_| Error::NoAvailPort)?;
|
||||||
log.debug_msg(format!("bound on {}", sock.local_addr()?))
|
log.debug_msg(format!("bound on {}", sock.local_addr()?))
|
||||||
.await;
|
.await;
|
||||||
upload(log, sock, tokio::io::stdin(), targ_addr).await?;
|
upload(log, sock, tokio::io::stdin(), targ_addr).await
|
||||||
log.debug_msg("bye!").await;
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_args(mut args: impl Iterator<Item = String>) -> Result<SocketAddrV4, Error> {
|
fn parse_args(mut args: impl Iterator<Item = String>) -> Result<SocketAddrV4, Error> {
|
||||||
|
@ -66,12 +64,16 @@ fn parse_args(mut args: impl Iterator<Item = String>) -> Result<SocketAddrV4, Er
|
||||||
.map_err(|_| Error::InvalidArgs)
|
.map_err(|_| Error::InvalidArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn upload(
|
async fn upload<IN>(
|
||||||
log: &mut Logger,
|
log: &mut Logger,
|
||||||
mut sock: UdpSocket,
|
mut sock: UdpSocket,
|
||||||
mut inp: Stdin,
|
mut inp: IN,
|
||||||
targ_addr: SocketAddrV4,
|
targ_addr: SocketAddrV4,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error>
|
||||||
|
where
|
||||||
|
IN: AsyncRead + Unpin,
|
||||||
|
{
|
||||||
|
use tokio::io::AsyncReadExt;
|
||||||
let mut buf = [0u8; 500];
|
let mut buf = [0u8; 500];
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
loop {
|
loop {
|
||||||
|
|
Loading…
Reference in New Issue