pub struct PutOperation<'a> { /* private fields */ }
Expand description

Represents an in-progress PUT Operation. Defined in OBEX 1.5 Section 3.4.3.

Example Usage:

let obex_client = ObexClient::new(..);
let put_operation = obex_client.put()?;
let user_data: Vec<u8> = vec![];
for user_data_chunk in user_data.chunks(50) {
  let received_headers = put_operation.write(&user_data_chunk[..], HeaderSet::new()).await?;
}
// `PutOperation::write_final` must be called before it is dropped. An empty payload is OK.
let final_headers = put_operation.write_final(&[], HeaderSet::new()).await?;
// PUT operation is complete and `put_operation` is consumed.

Implementations§

source§

impl<'a> PutOperation<'a>

source

pub fn new(headers: HeaderSet, transport: ObexTransport<'a>) -> Self

source

pub async fn delete(self, headers: HeaderSet) -> Result<HeaderSet, Error>

Attempts to delete an object from the remote OBEX server specified by the provided headers. Returns the informational headers from the peer response on success, Error otherwise.

source

pub async fn write( &mut self, data: &[u8], headers: HeaderSet ) -> Result<HeaderSet, Error>

Attempts to write the data object to the remote OBEX server. Returns the informational headers from the peer response on success, Error otherwise. The returned informational headers will be empty if Single Response Mode is enabled for the operation. Only the final write request (Self::write_final) will potentially return a non-empty set of headers.

source

pub async fn write_final( self, data: &[u8], headers: HeaderSet ) -> Result<HeaderSet, Error>

Attempts to write the final data object to the remote OBEX server. This must be called before the PutOperation object is dropped. Returns the informational headers from the peer response on success, Error otherwise.

The PUT operation is considered complete after this.

source

pub async fn terminate(self, headers: HeaderSet) -> Result<HeaderSet, Error>

Request to terminate a multi-packet PUT request early. Returns the informational headers from the peer response on success, Error otherwise. If Error is returned, there are no guarantees about the synchronization between the local OBEX client and remote OBEX server.

Trait Implementations§

source§

impl<'a> Debug for PutOperation<'a>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for PutOperation<'a>

§

impl<'a> !RefUnwindSafe for PutOperation<'a>

§

impl<'a> !Send for PutOperation<'a>

§

impl<'a> !Sync for PutOperation<'a>

§

impl<'a> Unpin for PutOperation<'a>

§

impl<'a> !UnwindSafe for PutOperation<'a>

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
§

impl<T> DebugExt for T
where T: Debug,

§

fn debug(&self) -> String

§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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