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!()
}
}
|