Struct runa_orbiter::objects::shm::ShmPool
source · pub struct ShmPool { /* private fields */ }
Expand description
A shm memory pool.
Implementations§
source§impl ShmPool
impl ShmPool
sourcepub unsafe fn map(&self) -> Ref<'_, [u8]>
pub unsafe fn map(&self) -> Ref<'_, [u8]>
Map the pool into memory.
This can be called repeatedly to retrieve the slice whenever you need it. The map operation is only performed once.
Safety
The file descriptor MUST be suitable for mapping.
You MUST setup a SIGBUS handler that calls handle_sigbus
. Otherwise if
the client shrunk the pool after you have mapped it, you will get a
SIGBUS when accessing the removed section of memory. handle_sigbus
will automatcally map in zero pages in that case.
Trait Implementations§
source§impl MonoObject for ShmPool
impl MonoObject for ShmPool
§type SingletonState = ()
type SingletonState = ()
A singleton state associated with the object type. This state is
associated with the type, so there is only one instance of
the state for all objects of the same type. The lifetime of this
state is managed by the object store, and it will be dropped when
the last object of the type is dropped.
source§const INTERFACE: &'static str = wl_shm_pool::NAME
const INTERFACE: &'static str = wl_shm_pool::NAME
The wayland interface implemented by this object.
source§fn new_singleton_state() -> Self::SingletonState
fn new_singleton_state() -> Self::SingletonState
Create a new instance of the singleton state.
source§impl<B, Ctx> Object<Ctx> for ShmPoolwhere
Ctx: Client,
Ctx::ServerContext: HasBuffer<Buffer = B>,
B: From<Buffer<Buffer>> + BufferLike,
Ctx::Object: From<Buffer<B>>,
impl<B, Ctx> Object<Ctx> for ShmPoolwhere Ctx: Client, Ctx::ServerContext: HasBuffer<Buffer = B>, B: From<Buffer<Buffer>> + BufferLike, Ctx::Object: From<Buffer<B>>,
§type Request<'a>
where
Ctx: 'a = Request
type Request<'a> where Ctx: 'a = Request
The type of wayland messages that this object can receive.
This is what the
dispatch
method accepts.§type Fut<'a>
where
Ctx: 'a = impl Future<Output = (Result<(), <ShmPool as Object<Ctx>>::Error>, usize, usize)> + 'a
type Fut<'a> where Ctx: 'a = impl Future<Output = (Result<(), <ShmPool as Object<Ctx>>::Error>, usize, usize)> + 'a
The future type returned by the
dispatch
method.source§fn dispatch<'a>(
ctx: &'a mut Ctx,
object_id: u32,
msg: Self::Request<'a>
) -> Self::Fut<'a>
fn dispatch<'a>( ctx: &'a mut Ctx, object_id: u32, msg: Self::Request<'a> ) -> Self::Fut<'a>
Dispatch a wayland request to this object. Returns a future,
that resolves to (Result, usize, usize), which are the result of the
request, the number of bytes and file descriptors in the request,
respectively.
source§fn on_disconnect(
&mut self,
_server_ctx: &mut <Ctx as Client>::ServerContext,
_state: &mut (dyn Any + 'static)
)
fn on_disconnect( &mut self, _server_ctx: &mut <Ctx as Client>::ServerContext, _state: &mut (dyn Any + 'static) )
A function that will be called when the client disconnects. It should
free up allocated resources if any. This function only gets reference to
the server context, because: Read more
source§impl<B, Ctx> RequestDispatch<Ctx> for ShmPoolwhere
Ctx: Client,
Ctx::ServerContext: HasBuffer<Buffer = B>,
B: From<Buffer<Buffer>> + BufferLike,
Ctx::Object: From<Buffer<B>>,
impl<B, Ctx> RequestDispatch<Ctx> for ShmPoolwhere Ctx: Client, Ctx::ServerContext: HasBuffer<Buffer = B>, B: From<Buffer<Buffer>> + BufferLike, Ctx::Object: From<Buffer<B>>,
type Error = Error
§type CreateBufferFut<'a>
where
Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
type CreateBufferFut<'a> where Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
Type of future returned by
create_buffer
§type DestroyFut<'a>
where
Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
type DestroyFut<'a> where Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
Type of future returned by
destroy
§type ResizeFut<'a>
where
Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
type ResizeFut<'a> where Ctx: 'a = impl Future<Output = Result<(), Error>> + 'a
Type of future returned by
resize
Auto Trait Implementations§
impl !RefUnwindSafe for ShmPool
impl !Send for ShmPool
impl !Sync for ShmPool
impl Unpin for ShmPool
impl !UnwindSafe for ShmPool
Blanket Implementations§
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
Casts the value.
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
Casts the value.
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
Casts the value.
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere T: UnwrappedCast<Dst>,
Casts the value.
source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere Src: UnwrappedCast<Dst>,
source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere T: WrappingCast<Dst>,
Casts the value.
source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere Src: WrappingCast<Dst>,
source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.