Skip to main content

Splice

Struct Splice 

Source
pub struct Splice { /* private fields */ }
Expand description

Zero-copy data transfer between two file descriptors.

Uses the kernel’s splice(2) syscall to move data directly from one file descriptor to another through the kernel pipe buffer. No data crosses the kernel-userspace boundary.

§Requirements

At least one of fd_in or fd_out must be a pipe. For file-to-pipe transfers (the warpscan output path), open the source file and splice directly to stdout.

§Example

use wireshift_core::ops::Splice;
use std::fs::File;

let src = File::open("data.bin").unwrap();
let dst = File::create("/dev/stdout").unwrap();
let op = Splice::new(src, Some(0), dst, None, 4096).unwrap();

Implementations§

Source§

impl Splice

Source

pub fn new( fd_in: File, off_in: Option<u64>, fd_out: File, off_out: Option<u64>, len: usize, ) -> Result<Self>

Create a new splice operation.

§Errors

Returns an error if len is zero.

Trait Implementations§

Source§

impl Op for Splice

Source§

type Output = SpliceResult

Successful output type.
Source§

fn name(&self) -> &'static str

Stable operation name for tracing and diagnostics.
Source§

fn into_descriptor(self) -> Result<OpDescriptor>

Converts the operation into a backend descriptor.
Source§

fn map_completion(payload: CompletionPayload) -> Result<Self::Output>

Maps a backend payload into the public output type.

Auto Trait Implementations§

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more