1use serde::{Deserialize, Serialize};
4
5pub mod codec;
6pub mod layer;
7pub mod service;
8
9use crate::util::BoxError;
10pub use layer::Layer;
11pub use service::Service;
12
13#[derive(Deserialize, Serialize)]
15#[serde(tag = "type")]
16pub enum Message<T> {
17 #[serde(rename = "ok")]
18 Ok { data: T },
19 #[serde(rename = "400")]
20 BadRequest,
21 #[serde(rename = "500")]
22 InternalServerError,
23}
24
25#[derive(Debug)]
27pub struct Error {
28 pub buf: bytes::BytesMut,
29 pub err: BoxError,
30}
31
32impl std::fmt::Display for Error {
33 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 f.write_str("service failed")
35 }
36}
37
38impl std::error::Error for Error {
39 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
40 Some(self.err.as_ref())
41 }
42}