ntex_mqtt/
session.rs

1use std::ops::Deref;
2use std::rc::Rc;
3
4/// Mqtt connection session
5pub struct Session<T, St>(Rc<SessionInner<T, St>>);
6
7struct SessionInner<T, St> {
8    st: St,
9    sink: T,
10}
11
12impl<T, St> Clone for Session<T, St> {
13    #[inline]
14    fn clone(&self) -> Self {
15        Session(self.0.clone())
16    }
17}
18
19impl<T, St> Session<T, St> {
20    pub(crate) fn new(st: St, sink: T) -> Self {
21        Session(Rc::new(SessionInner { st, sink }))
22    }
23
24    #[inline]
25    pub fn sink(&self) -> &T {
26        &self.0.sink
27    }
28
29    #[inline]
30    pub fn state(&self) -> &St {
31        &self.0.st
32    }
33}
34
35impl<T, St> Deref for Session<T, St> {
36    type Target = St;
37
38    #[inline]
39    fn deref(&self) -> &St {
40        &self.0.st
41    }
42}