use super::ReceivedTspMessage;
use bytes::BytesMut;
impl<T: AsRef<[u8]>> ReceivedTspMessage<T> {
pub fn into_owned(self) -> ReceivedTspMessage
where
T: Into<BytesMut>,
{
self.map(|x| x.into())
}
pub(crate) fn map<U: AsRef<[u8]>>(self, f: impl Fn(T) -> U) -> ReceivedTspMessage<U> {
use ReceivedTspMessage::*;
match self {
GenericMessage {
sender,
nonconfidential_data,
message,
message_type,
} => GenericMessage {
sender,
nonconfidential_data: nonconfidential_data.map(&f),
message: f(message),
message_type,
},
RequestRelationship {
sender,
route,
nested_vid,
thread_id,
} => RequestRelationship {
sender,
route,
nested_vid,
thread_id,
},
AcceptRelationship { sender, nested_vid } => AcceptRelationship { sender, nested_vid },
CancelRelationship { sender } => CancelRelationship { sender },
ForwardRequest {
sender,
next_hop,
route,
opaque_payload,
} => ForwardRequest {
sender,
next_hop,
route,
opaque_payload,
},
NewIdentifier { sender, new_vid } => NewIdentifier { sender, new_vid },
Referral {
sender,
referred_vid,
} => Referral {
sender,
referred_vid,
},
#[cfg(feature = "async")]
PendingMessage {
unknown_vid,
payload,
} => PendingMessage {
unknown_vid,
payload,
},
}
}
}