use super::WireframeApp;
use crate::{
WireframeError,
app::{
Packet,
error::Result,
middleware_types::{Handler, Middleware},
},
codec::FrameCodec,
serializer::Serializer,
};
impl<S, C, E, F> WireframeApp<S, C, E, F>
where
S: Serializer + Send + Sync,
C: Send + 'static,
E: Packet,
F: FrameCodec,
{
pub fn route(mut self, id: u32, handler: Handler<E>) -> Result<Self> {
if self.handlers.contains_key(&id) {
return Err(WireframeError::DuplicateRoute(id));
}
self.handlers.insert(id, handler);
self.routes = tokio::sync::OnceCell::new();
Ok(self)
}
pub fn wrap<M>(mut self, mw: M) -> Result<Self>
where
M: Middleware<E> + 'static,
{
self.middleware.push(Box::new(mw));
self.routes = tokio::sync::OnceCell::new();
Ok(self)
}
}