aboutsummaryrefslogtreecommitdiff
path: root/src/session/mod.rs
blob: 07dc527986b7aa546123b15c66e3112c715cb169 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
use crate::message::{objects::AliasManager, StatefulSyncableClient, SyncMessage, SyncProxy};

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

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

impl<T> Session for &T
where
    T: Session,
{
    fn alias_manager(&mut self) -> &mut 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!()
    }
}

#[allow(unused_variables)]
impl<T> SyncProxy for &mut 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!()
    }
}