Skip to main content

RbResponse

Struct RbResponse 

Source
#[repr(C)]
pub struct RbResponse { pub error_code: u32, pub len: u32, pub capacity: u32, pub data: *mut c_void, }
Expand description

FFI buffer for binary transport responses

Similar to FfiBuffer but designed specifically for binary struct responses. The response data is a raw C struct that can be cast directly by the host.

§Memory Layout

+------------+--------+----------+------------+
| error_code |  len   | capacity |    data    |
|   (u32)    | (u32)  |  (u32)   | (*mut u8)  |
+------------+--------+----------+------------+

§Usage

  • error_code == 0: Success, data points to response struct
  • error_code != 0: Error, data may point to error message

Fields§

§error_code: u32

Error code (0 = success)

§len: u32

Size of response data in bytes

§capacity: u32

Allocation capacity

§data: *mut c_void

Pointer to response data (or error message)

Implementations§

Source§

impl RbResponse

Source

pub fn success<T: Sized>(value: T) -> Self

Create a successful response with struct data

§Safety

The type T must be #[repr(C)] and safe to transmit across FFI.

Source

pub fn error(code: u32, message: &str) -> Self

Create an error response

Source

pub fn empty() -> Self

Create an empty response (for invalid calls)

Source

pub fn is_error(&self) -> bool

Check if this response indicates an error

Source

pub unsafe fn free(&mut self)

Free the response buffer

§Safety
  • Must only be called once
  • Must only be called on responses created by Rust
  • For success responses, the original type’s size must match len
Source

pub unsafe fn as_ref<T: Sized>(&self) -> Option<&T>

Get the response data as a typed reference

§Safety
  • Response must be successful (error_code == 0)
  • Type T must match the type used to create the response
  • T must be #[repr(C)]

Trait Implementations§

Source§

impl Debug for RbResponse

Source§

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

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

impl Default for RbResponse

Source§

fn default() -> Self

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

impl Send for RbResponse

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