Worker

Struct Worker 

Source
pub struct Worker<T: Socket + ?Sized> { /* private fields */ }
Expand description

Worker struct is used for multithreaded file sending and receiving. It creates a new socket using the Server’s IP and a random port requested from the OS to communicate with the requesting client.

See Worker::send() and Worker::receive() for more details.

§Example

use std::{net::{UdpSocket, SocketAddr}, path::PathBuf, str::FromStr, time::Duration};
use tftpd::{Worker};

// Send a file, responding to a read request.
let socket = UdpSocket::bind("127.0.0.1:0").unwrap();
socket.connect(SocketAddr::from_str("127.0.0.1:12345").unwrap()).unwrap();
let has_options = false;

let worker = Worker::new(
    Box::new(socket),
    PathBuf::from_str("Cargo.toml").unwrap(),
    Default::default(),
    Default::default(),
);

worker.send(has_options).unwrap();

Implementations§

Source§

impl<T: Socket + ?Sized> Worker<T>

Source

pub fn new( socket: Box<T>, file_path: PathBuf, opt_local: OptionsPrivate, opt_common: OptionsProtocol, ) -> Worker<T>

Creates a new Worker with the supplied options.

Source

pub fn send( self, check_response: bool, ) -> Result<JoinHandle<bool>, Box<dyn Error>>

Sends a file to the remote [SocketAddr] that has sent a read request using a random port, asynchronously.

Source

pub fn receive(self) -> Result<JoinHandle<bool>, Box<dyn Error>>

Receives a file from the remote [SocketAddr] (client or server) using the supplied socket, asynchronously.

Auto Trait Implementations§

§

impl<T> Freeze for Worker<T>
where T: ?Sized,

§

impl<T> RefUnwindSafe for Worker<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> Send for Worker<T>
where T: ?Sized,

§

impl<T> Sync for Worker<T>
where T: ?Sized,

§

impl<T> Unpin for Worker<T>
where T: ?Sized,

§

impl<T> UnwindSafe for Worker<T>
where T: UnwindSafe + ?Sized,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.