pub struct ListeningSocket { /* private fields */ }
Expand description
An utility representing a unix socket on which your compositor is listening for new clients
Implementations§
source§impl ListeningSocket
impl ListeningSocket
sourcepub fn bind<S: AsRef<OsStr>>(socket_name: S) -> Result<Self, BindError>
pub fn bind<S: AsRef<OsStr>>(socket_name: S) -> Result<Self, BindError>
Attempt to bind a listening socket with given name
This method will acquire an associate lockfile. The socket will be created in the
directory pointed to by the XDG_RUNTIME_DIR
environment variable.
sourcepub fn bind_auto(
basename: &str,
range: impl IntoIterator<Item = usize>,
) -> Result<Self, BindError>
pub fn bind_auto( basename: &str, range: impl IntoIterator<Item = usize>, ) -> Result<Self, BindError>
Attempt to bind a listening socket from a sequence of names
This method will repeatedly try to bind sockets in the form {basename}-{n}
for values of n
yielded from the provided range and returns the first one that succeeds.
This method will acquire an associate lockfile. The socket will be created in the
directory pointed to by the XDG_RUNTIME_DIR
environment variable.
sourcepub fn bind_absolute(socket_path: PathBuf) -> Result<Self, BindError>
pub fn bind_absolute(socket_path: PathBuf) -> Result<Self, BindError>
Attempt to bind a listening socket with given name
The socket will be created at the specified path, and this method will acquire an associatet lockfile alongside it.
sourcepub fn accept(&self) -> Result<Option<UnixStream>>
pub fn accept(&self) -> Result<Option<UnixStream>>
Try to accept a new connection to the listening socket
This method will never block, and return Ok(None)
if no new connection is available.
sourcepub fn socket_name(&self) -> Option<&OsStr>
pub fn socket_name(&self) -> Option<&OsStr>
Returns the name of the listening socket.
Will only be Some
if that socket was created with bind()
or
bind_auto()
.
Trait Implementations§
source§impl AsFd for ListeningSocket
impl AsFd for ListeningSocket
source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
Returns a file descriptor that may be polled for readiness.
This file descriptor may be polled using apis such as epoll and kqueue to be told when a client has found the socket and is trying to connect.
When the polling system reports the file descriptor is ready, you can use accept()
to get a stream to the new client.
source§impl AsRawFd for ListeningSocket
impl AsRawFd for ListeningSocket
source§fn as_raw_fd(&self) -> RawFd
fn as_raw_fd(&self) -> RawFd
Returns a file descriptor that may be polled for readiness.
This file descriptor may be polled using apis such as epoll and kqueue to be told when a client has found the socket and is trying to connect.
When the polling system reports the file descriptor is ready, you can use accept()
to get a stream to the new client.
source§impl Debug for ListeningSocket
impl Debug for ListeningSocket
Auto Trait Implementations§
impl Freeze for ListeningSocket
impl RefUnwindSafe for ListeningSocket
impl Send for ListeningSocket
impl Sync for ListeningSocket
impl Unpin for ListeningSocket
impl UnwindSafe for ListeningSocket
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.