cyfs_lib/router_handler/
processor.rs

1use 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>>;