Struct ClientAssociation

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

A DICOM upper level association from the perspective of a requesting application entity.

The most common operations of an established association are send and receive. Sending large P-Data fragments may be easier through the P-Data sender abstraction (see send_pdata).

When the value falls out of scope, the program will automatically try to gracefully release the association through a standard C-RELEASE message exchange, then shut down the underlying TCP connection.

Implementations§

Source§

impl ClientAssociation

Source

pub fn presentation_contexts(&self) -> &[PresentationContextResult]

Retrieve the list of negotiated presentation contexts.

Source

pub fn acceptor_max_pdu_length(&self) -> u32

Retrieve the maximum PDU length admitted by the association acceptor.

Source

pub fn requestor_max_pdu_length(&self) -> u32

Retrieve the maximum PDU length that this application entity is expecting to receive.

The current implementation is not required to fail and/or abort the association if a larger PDU is received.

Source

pub fn send(&mut self, msg: &Pdu) -> Result<()>

Send a PDU message to the other intervenient.

Source

pub fn receive(&mut self) -> Result<Pdu>

Read a PDU message from the other intervenient.

Source

pub fn release(self) -> Result<()>

Gracefully terminate the association by exchanging release messages and then shutting down the TCP connection.

Source

pub fn abort(self) -> Result<()>

Send an abort message and shut down the TCP connection, terminating the association.

Source

pub fn inner_stream(&mut self) -> &mut TcpStream

Obtain access to the inner TCP stream connected to the association acceptor.

This can be used to send the PDU in semantic fragments of the message, thus using less memory.

Note: reading and writing should be done with care to avoid inconsistencies in the association state. Do not call send and receive while not in a PDU boundary.

Source

pub fn send_pdata( &mut self, presentation_context_id: u8, ) -> PDataWriter<&mut TcpStream>

Prepare a P-Data writer for sending one or more data items.

Returns a writer which automatically splits the inner data into separate PDUs if necessary.

Source

pub fn receive_pdata(&mut self) -> PDataReader<&mut TcpStream>

Prepare a P-Data reader for receiving one or more data item PDUs.

Returns a reader which automatically receives more data PDUs once the bytes collected are consumed.

Trait Implementations§

Source§

impl Debug for ClientAssociation

Source§

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

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

impl Drop for ClientAssociation

Automatically release the association and shut down the connection.

Source§

fn drop(&mut self)

Executes the destructor for this 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<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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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