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