Request

Trait Request 

Source
pub unsafe trait Request: Send + 'static {
    type Raw: Copy + Send + Sized + 'static;

    const ID: RequestId;

    // Required methods
    fn len(&self) -> usize;
    unsafe fn from_ptr<'a>(
        ptr: *const u8,
        dbr: RequestId,
        count: usize,
    ) -> Result<&'a Self, Error>;
    fn clone_boxed(&self) -> Box<Self>;
}
Expand description

Abstract request to channel.

§Safety

Should be implemented only for requests supported by channel access.

Self and Self::Raw must be safely transmutable to each other.

Required Associated Constants§

Source

const ID: RequestId

Request identifier.

Required Associated Types§

Source

type Raw: Copy + Send + Sized + 'static

Raw request structure.

Required Methods§

Source

fn len(&self) -> usize

Length of the value in the request.

Source

unsafe fn from_ptr<'a>( ptr: *const u8, dbr: RequestId, count: usize, ) -> Result<&'a Self, Error>

Create reference (possibly wide) to the request from raw pointer and count of elements.

§Safety

Pointer must be valid and point to raw request structure.

Source

fn clone_boxed(&self) -> Box<Self>

Clone request and put it in newly allocated box.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Request for ClassName

Source§

const ID: RequestId = RequestId::ClassName

Source§

type Raw = [u8; 40]

Source§

impl Request for PutAcks

Source§

const ID: RequestId = RequestId::PutAcks

Source§

type Raw = u16

Source§

impl Request for PutAckt

Source§

const ID: RequestId = RequestId::PutAckt

Source§

type Raw = u16

Source§

impl<V: Value + ?Sized> Request for CtrlFloat<V>
where V::Item: Float,

Source§

impl<V: Value + ?Sized> Request for CtrlInt<V>
where V::Item: Int,

Source§

impl<V: Value + ?Sized> Request for GrFloat<V>
where V::Item: Float,

Source§

const ID: RequestId

Source§

type Raw = <<V as Value>::Item as Field>::GrRaw

Source§

impl<V: Value + ?Sized> Request for GrInt<V>
where V::Item: Int,

Source§

const ID: RequestId

Source§

type Raw = <<V as Value>::Item as Field>::GrRaw

Source§

impl<V: Value + ?Sized> Request for Sts<V>

Source§

impl<V: Value + ?Sized> Request for Time<V>

Source§

impl<V: Value + ?Sized> Request for V

Source§

const ID: RequestId

Source§

type Raw = <<V as Value>::Item as Field>::Raw

Source§

impl<V: Value<Item = EpicsEnum> + ?Sized> Request for CtrlEnum<V>

Source§

impl<V: Value<Item = EpicsEnum> + ?Sized> Request for GrEnum<V>

Source§

const ID: RequestId

Source§

type Raw = <<V as Value>::Item as Field>::GrRaw

Source§

impl<V: Value<Item = EpicsString> + ?Sized> Request for CtrlString<V>

Source§

impl<V: Value<Item = EpicsString> + ?Sized> Request for GrString<V>

Source§

const ID: RequestId

Source§

type Raw = <<V as Value>::Item as Field>::GrRaw

Source§

impl<V: Value<Item = EpicsString> + ?Sized> Request for StsackString<V>

Source§

const ID: RequestId = RequestId::StsackString

Source§

type Raw = dbr_stsack_string