summaryrefslogtreecommitdiff
path: root/src/transport/connection.rs
blob: 34366a2863867e7cc87042f25af7eea34de0c6b0 (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
use std::marker::PhantomData;

use getset::Getters;

use crate::transport::{receiver::PacketReceiver, sender::PacketSender};

#[derive(Getters)]
pub struct Connection<Uid, Data, S, R>
where
    Uid: PartialEq,
    S: PacketSender<Data> + Clone,
    R: PacketReceiver<Data, Uid>,
{
    #[get = "pub"]
    sender: S,
    #[get = "pub"]
    receiver: R,
    _uid: PhantomData<Uid>,
    _data: PhantomData<Data>,
}

impl<Uid, Data, S, R> Connection<Uid, Data, S, R>
where
    Uid: PartialEq,
    S: PacketSender<Data> + Clone,
    R: PacketReceiver<Data, Uid>,
{
    pub fn new(sender: S, receiver: R) -> Self {
        Self {
            sender,
            receiver,
            _uid: PhantomData,
            _data: PhantomData,
        }
    }
}