use crate::bus::{MessageRouter, OrderedDelivery, TransportError};
use crate::microsvc::{Message, MessageKind, Service, SubscriptionPlan};
impl MessageRouter for Service {
fn consumer_group(&self) -> Option<&str> {
self.name()
}
fn handles(&self, kind: MessageKind, name: &str) -> bool {
self.handles_message(kind, name)
}
fn subscription_plan(&self) -> SubscriptionPlan {
Service::subscription_plan(self)
}
async fn dispatch(&self, message: &Message) -> Result<(), TransportError> {
self.dispatch_message(message)
.await
.map(|_| ())
.map_err(TransportError::from)
}
async fn dispatch_ordered(
&self,
message: &Message,
ordered: Option<&OrderedDelivery>,
) -> Result<(), TransportError> {
self.dispatch_ordered_message(message, ordered)
.await
.map(|_| ())
.map_err(TransportError::from)
}
}