moq_transport/message/
subscriber.rs1use crate::message::{self, Message};
2use std::fmt;
3
4macro_rules! subscriber_msgs {
5 {$($name:ident,)*} => {
6 #[derive(Clone)]
7 pub enum Subscriber {
8 $($name(message::$name)),*
9 }
10
11 $(impl From<message::$name> for Subscriber {
12 fn from(msg: message::$name) -> Self {
13 Subscriber::$name(msg)
14 }
15 })*
16
17 impl From<Subscriber> for Message {
18 fn from(p: Subscriber) -> Self {
19 match p {
20 $(Subscriber::$name(m) => Message::$name(m),)*
21 }
22 }
23 }
24
25 impl TryFrom<Message> for Subscriber {
26 type Error = Message;
27
28 fn try_from(m: Message) -> Result<Self, Self::Error> {
29 match m {
30 $(Message::$name(m) => Ok(Subscriber::$name(m)),)*
31 _ => Err(m),
32 }
33 }
34 }
35
36 impl fmt::Debug for Subscriber {
37 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39 match self {
40 $(Self::$name(ref m) => m.fmt(f),)*
41 }
42 }
43 }
44 }
45}
46
47subscriber_msgs! {
49 Subscribe,
50 SubscribeUpdate,
51 Unsubscribe,
52 Fetch,
53 FetchCancel,
54 TrackStatus,
55 SubscribeNamespace,
56 UnsubscribeNamespace,
57 PublishNamespaceCancel,
58 PublishNamespaceOk,
59 PublishNamespaceError,
60 PublishOk,
61 PublishError,
62}