aboutsummaryrefslogtreecommitdiff
path: root/src/session/mod.rs
blob: 7fa5c29f503cfecb431077c75347614fc9494cbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::message::{objects::AliasManager, SyncMessage, SyncProxy};

/// The Session Trait is the main point of entry and implements the basic logic
pub trait Session: SyncProxy {
    fn alias_manager(&self) -> AliasManager;

    fn handle_syncmessage(&self, msg: SyncMessage)
    where
        Self: Sized,
    {
        match msg.class_name.as_str() {
            "AliasManager" => self.alias_manager().handle_syncmessage(self, msg),
            _ => (),
        }
    }
}

impl<T> Session for &T
where
    T: Session,
{
    fn alias_manager(&self) -> AliasManager {
        todo!()
    }
}

#[allow(unused_variables)]
impl<T> SyncProxy for &T
where
    T: SyncProxy,
{
    fn sync(
        &self,
        class_name: &str,
        object_name: Option<&str>,
        function: &str,
        params: crate::primitive::VariantList,
    ) {
        todo!()
    }

    fn rpc(&self, function: &str, params: crate::primitive::VariantList) {
        todo!()
    }
}