dope_session/pool/client/
state.rs1use crate::protocol::client::ClientProtocol;
2use dope_core::addr::SockAddr;
3use dope_core::driver::{IoRequest, PoolDriver};
4
5use super::super::slot::INGRESS_BUF_CAP;
6use crate::session::ClientSessionGeneric;
7
8pub(crate) const CLIENT_IOV_CAP: usize = 32;
9
10pub(crate) const CLIENT_BYTES_CAP: usize = 256 * 1024;
11
12pub(crate) enum ClientSlotPhase<B: PoolDriver> {
13 Idle,
14 Connecting {
15 fixed_idx: u32,
16 raw_fd: i32,
17 request: IoRequest<B, SockAddr>,
18 },
19 Active,
20}
21
22impl<B: PoolDriver> Default for ClientSlotPhase<B> {
23 #[inline(always)]
24 fn default() -> Self {
25 Self::Idle
26 }
27}
28
29pub struct ClientSlotState<P: ClientProtocol, B: PoolDriver> {
30 pub(crate) session: ClientSessionGeneric<P, INGRESS_BUF_CAP, CLIENT_IOV_CAP>,
31 pub(crate) phase: ClientSlotPhase<B>,
32 pub(crate) upstream_tag: u32,
33}
34
35impl<P: ClientProtocol, B: PoolDriver> Default for ClientSlotState<P, B> {
36 fn default() -> Self {
37 Self {
38 session: ClientSessionGeneric::default(),
39 phase: ClientSlotPhase::Idle,
40 upstream_tag: 0,
41 }
42 }
43}