xwrust::xwmd::xwmq

Struct XwmqTx

source
pub struct XwmqTx<'a, const N: XwSz, T>
where [u8; { _ }]: Sized,
{ /* private fields */ }

Implementations§

source§

impl<'a, const N: XwSz, T> XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

source

pub fn eq(&self, data: T) -> XwmqError

等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
  • 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq("message".to_string());
    // ...省略...
}
source

pub fn eq_to(&self, data: T, to: XwTm) -> XwmqError

限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
  • 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt
  • 当到达指定的唤醒时间点,线程被唤醒,并返回 XwmqError::Timedout
§参数说明
  • data: 类型为 T 的数据
  • to: 期望唤醒的时间点
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
    // ...省略...
}
source

pub fn eq_unintr(&self, data: T) -> XwmqError

等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 尾端 (入队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
  • 发送线程的阻塞等待不可被中断。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.eq_unintr("message".to_string());
    // ...省略...
}
source

pub fn tryeq(&self, data: T) -> XwmqError

尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队)

  • 当消息队列中没有可用的消息槽可用时,立即返回 XwmqError::NoSlot
  • 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 任意
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.tryeq("message".to_string());
    // ...省略...
}
source

pub fn jq(&self, data: T) -> XwmqError

等待消息槽,成功后将消息发送到消息队列的 首端 (插队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
  • 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq("message".to_string());
    // ...省略...
}
source

pub fn jq_to(&self, data: T, to: XwTm) -> XwmqError

限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待,等待时会指定一个唤醒时间点。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
  • 当发送线程阻塞等待被中断时,返回 XwmqError::Interrupt
  • 当到达指定的唤醒时间点,线程被唤醒,并返回 XwmqError::Timedout
§参数说明
  • data: 类型为 T 的数据
  • to: 期望唤醒的时间点
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwtm;
use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq_to("message".to_string(), xwtm::ft(xwtm::s(1)));
    // ...省略...
}
source

pub fn jq_unintr(&self, data: T) -> XwmqError

等待消息槽,且等待不可被中断,成功后将消息发送到消息队列的 首端 (插队)

  • 当消息队列中没有可用的消息槽可用时,发送线程会阻塞等待。
  • 发送线程的阻塞等待不可被中断。
  • 当消息队列中有可用的消息槽时,发送线程被唤醒,并取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 线程
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.jq_unintr("message".to_string());
    // ...省略...
}
source

pub fn tryjq(&self, data: T) -> XwmqError

尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队)

  • 当消息队列中没有可用的消息槽可用时,立即返回 XwmqError::NoSlot
  • 当消息队列中有可用的消息槽时,取走一个消息槽,用于发送数据。
  • 消息 入队 时,会通过 Box 将数据放入heap中,然后进行发送。
§参数说明
  • data: 类型为 T 的数据
§上下文
  • 任意
§错误码
§示例
extern crate alloc;
use alloc::string::String;
use alloc::string::ToString;

use xwrust::xwmd::xwmq::*;

static MQ: Xwmq<16, String> = Xwmq::new();

pub fn xwrust_example_xwmq() {
    let (tx, rx) = MQ.init();
    // ...省略...
    tx.tryjq("message".to_string());
    // ...省略...
}

Trait Implementations§

source§

impl<'a, const N: XwSz, T: Clone> Clone for XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

source§

fn clone(&self) -> XwmqTx<'a, N, T>

Returns a copy of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a, const N: XwSz, T> Send for XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

source§

impl<'a, const N: XwSz, T> !Sync for XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

Auto Trait Implementations§

§

impl<'a, const N: usize, T> Freeze for XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

§

impl<'a, const N: usize, T> !RefUnwindSafe for XwmqTx<'a, N, T>

§

impl<'a, const N: usize, T> Unpin for XwmqTx<'a, N, T>
where [u8; { _ }]: Sized,

§

impl<'a, const N: usize, T> !UnwindSafe for XwmqTx<'a, N, T>

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.