pub struct Rx<T: 'static> {
pub channel_id: ChannelId,
pub receiver: ReceiverSlot,
/* private fields */
}Expand description
Rx stream handle - caller receives data from callee.
r[impl channeling.caller-pov] - From caller’s perspective, Rx means “I receive”. r[impl channeling.type] - Serializes as u64 stream ID on wire. r[impl channeling.holder-semantics] - The holder receives from this stream.
§Facet Implementation
Uses #[facet(proxy = u64)] so that:
channel_idis pokeable (Connection can walk args and set stream IDs)- Serializes as just a
u64on the wire Tis exposed as a type parameter for codegen introspection
The receiver field uses ReceiverSlot wrapper so that ConnectionHandle::call
can use Poke::get_mut::<ReceiverSlot>() to .take() the receiver and register
it with the stream registry.
Fields§
§channel_id: ChannelIdThe unique stream ID for this stream. Public so Connection can poke it when binding streams.
receiver: ReceiverSlotChannel receiver for incoming data. Uses ReceiverSlot so it’s pokeable (can .take() via Poke).
Implementations§
Source§impl<T: 'static> Rx<T>
impl<T: 'static> Rx<T>
Sourcepub fn new(channel_id: ChannelId, rx: Receiver<Vec<u8>>) -> Self
pub fn new(channel_id: ChannelId, rx: Receiver<Vec<u8>>) -> Self
Create a new Rx stream with the given ID and receiver channel.
Sourcepub fn unbound(rx: Receiver<Vec<u8>>) -> Self
pub fn unbound(rx: Receiver<Vec<u8>>) -> Self
Create an unbound Rx with a receiver but channel_id 0.
Used by roam::channel() to create a pair before binding.
Connection will poke the channel_id when binding.
Sourcepub fn bound(channel_id: ChannelId, rx: Receiver<Vec<u8>>) -> Self
pub fn bound(channel_id: ChannelId, rx: Receiver<Vec<u8>>) -> Self
Create a bound Rx with channel_id already set.
Used by roam::channel() when called during dispatch to create
response channels. The channel_id will be serialized and sent to
the client, who will bind a receiver for incoming Data.
Sourcepub fn channel_id(&self) -> ChannelId
pub fn channel_id(&self) -> ChannelId
Get the stream ID.
Sourcepub async fn recv(&mut self) -> Result<Option<T>, RxError>where
T: Facet<'static>,
pub async fn recv(&mut self) -> Result<Option<T>, RxError>where
T: Facet<'static>,
Receive the next value from this stream.
Returns Ok(Some(value)) for each received value,
Ok(None) when the stream is closed,
or Err if deserialization fails.
r[impl channeling.data] - Deserialize Data message payloads. r[impl channeling.data.invalid] - Caller must send Goodbye on deserialize error.
Trait Implementations§
Source§impl<T: 'static> TryFrom<&Rx<T>> for u64
Serialization: &Rx<T> -> u64 (extracts channel_id)
impl<T: 'static> TryFrom<&Rx<T>> for u64
Serialization: &Rx<T> -> u64 (extracts channel_id)
Uses TryFrom rather than From because facet’s proxy mechanism requires TryFrom.
Source§impl<T: 'static> TryFrom<u64> for Rx<T>
Deserialization: u64 -> Rx<T> (creates a “hollow” Rx)
impl<T: 'static> TryFrom<u64> for Rx<T>
Deserialization: u64 -> Rx<T> (creates a “hollow” Rx)
The receiver is a placeholder - the real receiver gets set up by Connection after deserialization when it binds the stream.
Uses TryFrom rather than From because facet’s proxy mechanism requires TryFrom.
Auto Trait Implementations§
impl<T> Freeze for Rx<T>
impl<T> RefUnwindSafe for Rx<T>where
T: RefUnwindSafe,
impl<T> Send for Rx<T>where
T: Send,
impl<T> Sync for Rx<T>where
T: Sync,
impl<T> Unpin for Rx<T>where
T: Unpin,
impl<T> UnwindSafe for Rx<T>where
T: UnwindSafe,
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
Source§impl<'a, T> FacetPretty<'a> for Twhere
T: Facet<'a>,
impl<'a, T> FacetPretty<'a> for Twhere
T: Facet<'a>,
Source§fn pretty(&self) -> PrettyDisplay<'a, '_, T>
fn pretty(&self) -> PrettyDisplay<'a, '_, T>
Source§fn pretty_with(&self, printer: PrettyPrinter) -> PrettyDisplay<'a, '_, T>
fn pretty_with(&self, printer: PrettyPrinter) -> PrettyDisplay<'a, '_, T>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more