Skip to main content

ScsiDataOutBuilder

Struct ScsiDataOutBuilder 

Source
pub struct ScsiDataOutBuilder {
    pub header: ScsiDataOut,
    /* private fields */
}
Expand description

Builder for SCSI Data-Out PDUs (opcode 0x26).

This helper prepares the Basic Header Segment (BHS) for Data-Out and lets the higher layer stream an arbitrary payload split into chunks that respect the negotiated MaxRecvDataSegmentLength (MRDSL).

When the payload is later converted into wire frames (by your ToBytes/Builder implementation), each chunk will be emitted as a separate Data-Out PDU with:

  • F (Final) = 1 only on the last chunk,
  • DataSN increasing sequentially per PDU,
  • BufferOffset set to the cumulative number of bytes already sent,
  • DataSegmentLength equal to the current chunk size (without padding).

Target Transfer Tag (TTT) semantics:

  • For unsolicited / initial burst Data-Out PDUs, use DEFAULT_TTT = 0xFFFF_FFFF.
  • For R2T-driven transfers, set the TTT received in the R2T PDU.

You can also request HeaderDigest and/or DataDigest emission; these flags only affect how the final frames are serialized (they do not modify the BHS fields directly).

Fields§

§header: ScsiDataOut

Implementations§

Source§

impl ScsiDataOutBuilder

Source

pub const DEFAULT_TTT: u32 = 0xFFFF_FFFF

The default Target Transfer Tag for unsolicited Data-Out PDUs.

Source

pub fn new() -> Self

Creates a new ScsiDataOutBuilder with default values.

Source

pub fn lun(self, lun: u64) -> Self

Sets the Logical Unit Number (LUN) for the data transfer.

Source

pub fn initiator_task_tag(self, itt: u32) -> Self

Sets the Initiator Task Tag (ITT) for the command.

Source

pub fn target_transfer_tag(self, ttt: u32) -> Self

Sets the Target Transfer Tag (TTT) for the data transfer.

Source

pub fn exp_stat_sn(self, sn: u32) -> Self

Sets the expected status sequence number (ExpStatSN).

Source

pub fn data_sn(self, data_sn: u32) -> Self

Sets the Data Sequence Number (DataSN) for this PDU.

Source

pub fn buffer_offset(self, buffer_offset: u32) -> Self

Sets the buffer offset for this PDU.

Source

pub fn with_header_digest(self) -> Self

Enables header digest for the PDU.

Source

pub fn with_data_digest(self) -> Self

Enables data digest for the PDU.

Trait Implementations§

Source§

impl Debug for ScsiDataOutBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ScsiDataOutBuilder

Source§

fn default() -> ScsiDataOutBuilder

Returns the “default value” for a type. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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