v_authorization_impl/
lib.rs1#[macro_use]
2extern crate log;
3
4pub mod az_lmdb;
5pub mod az_mdbx;
6mod stat_manager;
7mod common;
8
9pub use az_lmdb::LmdbAzContext;
10pub use az_mdbx::MdbxAzContext;
11pub use v_authorization;
12
13use v_authorization::common::AuthorizationContext;
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
17pub enum AzDbType {
18 Lmdb,
19 Mdbx,
20}
21
22pub enum AzContext {
24 Lmdb(LmdbAzContext),
25 Mdbx(MdbxAzContext),
26}
27
28impl AzContext {
29 pub fn new(db_type: AzDbType, max_read_counter: u64) -> Self {
30 match db_type {
31 AzDbType::Lmdb => AzContext::Lmdb(LmdbAzContext::new(max_read_counter)),
32 AzDbType::Mdbx => AzContext::Mdbx(MdbxAzContext::new(max_read_counter)),
33 }
34 }
35
36 pub fn new_with_config(
37 db_type: AzDbType,
38 max_read_counter: u64,
39 stat_collector_url: Option<String>,
40 stat_mode_str: Option<String>,
41 use_cache: Option<bool>,
42 ) -> Self {
43 match db_type {
44 AzDbType::Lmdb => AzContext::Lmdb(LmdbAzContext::new_with_config(
45 max_read_counter,
46 stat_collector_url,
47 stat_mode_str,
48 use_cache,
49 )),
50 AzDbType::Mdbx => AzContext::Mdbx(MdbxAzContext::new_with_config(
51 max_read_counter,
52 stat_collector_url,
53 stat_mode_str,
54 use_cache,
55 )),
56 }
57 }
58}
59
60impl AuthorizationContext for AzContext {
61 fn authorize(
62 &mut self,
63 uri: &str,
64 user_uri: &str,
65 request_access: u8,
66 is_check_for_reload: bool,
67 ) -> Result<u8, std::io::Error> {
68 match self {
69 AzContext::Lmdb(ctx) => ctx.authorize(uri, user_uri, request_access, is_check_for_reload),
70 AzContext::Mdbx(ctx) => ctx.authorize(uri, user_uri, request_access, is_check_for_reload),
71 }
72 }
73
74 fn authorize_and_trace(
75 &mut self,
76 uri: &str,
77 user_uri: &str,
78 request_access: u8,
79 is_check_for_reload: bool,
80 trace: &mut v_authorization::common::Trace,
81 ) -> Result<u8, std::io::Error> {
82 match self {
83 AzContext::Lmdb(ctx) => ctx.authorize_and_trace(uri, user_uri, request_access, is_check_for_reload, trace),
84 AzContext::Mdbx(ctx) => ctx.authorize_and_trace(uri, user_uri, request_access, is_check_for_reload, trace),
85 }
86 }
87}
88