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