cyfs_lib/router_handler/
processor.rs1use super::action::*;
2use super::category::*;
3use super::chain::*;
4use super::request::*;
5use crate::acl::*;
6use crate::crypto::*;
7use crate::ndn::*;
8use crate::non::*;
9use cyfs_base::*;
10use cyfs_util::*;
11
12use std::sync::Arc;
13
14#[async_trait::async_trait]
15pub trait RouterHandlerProcessor<REQ, RESP>: Send + Sync
16where
17 REQ: Send + Sync + 'static + JsonCodec<REQ> + std::fmt::Display,
18 RESP: Send + Sync + 'static + JsonCodec<RESP> + std::fmt::Display,
19 RouterHandlerRequest<REQ, RESP>: RouterHandlerCategoryInfo,
20{
21 async fn add_handler(
22 &self,
23 chain: RouterHandlerChain,
24 id: &str,
25 index: i32,
26 filter: Option<String>,
27 req_path: Option<String>,
28 default_action: RouterHandlerAction,
29 routine: Option<
30 Box<
31 dyn EventListenerAsyncRoutine<
32 RouterHandlerRequest<REQ, RESP>,
33 RouterHandlerResponse<REQ, RESP>,
34 >,
35 >,
36 >,
37 ) -> BuckyResult<()>;
38
39 async fn remove_handler(&self, chain: RouterHandlerChain, id: &str) -> BuckyResult<bool>;
40}
41
42pub trait RouterHandlerManagerProcessor: Send + Sync {
43 fn get_object(
44 &self,
45 ) -> &dyn RouterHandlerProcessor<NONGetObjectInputRequest, NONGetObjectInputResponse>;
46 fn put_object(
47 &self,
48 ) -> &dyn RouterHandlerProcessor<NONPutObjectInputRequest, NONPutObjectInputResponse>;
49 fn post_object(
50 &self,
51 ) -> &dyn RouterHandlerProcessor<NONPostObjectInputRequest, NONPostObjectInputResponse>;
52 fn select_object(
53 &self,
54 ) -> &dyn RouterHandlerProcessor<NONSelectObjectInputRequest, NONSelectObjectInputResponse>;
55 fn delete_object(
56 &self,
57 ) -> &dyn RouterHandlerProcessor<NONDeleteObjectInputRequest, NONDeleteObjectInputResponse>;
58
59 fn get_data(
60 &self,
61 ) -> &dyn RouterHandlerProcessor<NDNGetDataInputRequest, NDNGetDataInputResponse>;
62 fn put_data(
63 &self,
64 ) -> &dyn RouterHandlerProcessor<NDNPutDataInputRequest, NDNPutDataInputResponse>;
65 fn delete_data(
66 &self,
67 ) -> &dyn RouterHandlerProcessor<NDNDeleteDataInputRequest, NDNDeleteDataInputResponse>;
68
69 fn sign_object(
70 &self,
71 ) -> &dyn RouterHandlerProcessor<CryptoSignObjectInputRequest, CryptoSignObjectInputResponse>;
72 fn verify_object(
73 &self,
74 ) -> &dyn RouterHandlerProcessor<CryptoVerifyObjectInputRequest, CryptoVerifyObjectInputResponse>;
75 fn encrypt_data(
76 &self,
77 ) -> &dyn RouterHandlerProcessor<CryptoEncryptDataInputRequest, CryptoEncryptDataInputResponse>;
78 fn decrypt_data(
79 &self,
80 ) -> &dyn RouterHandlerProcessor<CryptoDecryptDataInputRequest, CryptoDecryptDataInputResponse>;
81
82 fn acl(&self) -> &dyn RouterHandlerProcessor<AclHandlerRequest, AclHandlerResponse>;
83
84 fn interest(
85 &self,
86 ) -> &dyn RouterHandlerProcessor<InterestHandlerRequest, InterestHandlerResponse>;
87}
88
89pub type RouterHandlerManagerProcessorRef = Arc<Box<dyn RouterHandlerManagerProcessor>>;