rpc_core_net/
config_builder.rs

1use std::rc::Rc;
2
3use crate::config::{RpcConfig, TcpConfig};
4
5pub struct TcpConfigBuilder {
6    auto_pack: bool,
7    enable_ipv6: bool,
8    max_body_size: u32,
9    max_send_buffer_size: u32,
10    socket_send_buffer_size: u32,
11    socket_recv_buffer_size: u32,
12}
13
14impl TcpConfigBuilder {
15    pub fn new() -> Self {
16        Self {
17            auto_pack: false,
18            enable_ipv6: false,
19            max_body_size: 0,
20            max_send_buffer_size: 0,
21            socket_send_buffer_size: 0,
22            socket_recv_buffer_size: 0,
23        }
24    }
25
26    pub fn auto_pack(&mut self, auto_pack: bool) -> &mut Self {
27        self.auto_pack = auto_pack;
28        self
29    }
30
31    pub fn enable_ipv6(&mut self, enable_ipv6: bool) -> &mut Self {
32        self.enable_ipv6 = enable_ipv6;
33        self
34    }
35
36    pub fn max_body_size(&mut self, max_body_size: u32) -> &mut Self {
37        self.max_body_size = max_body_size;
38        self
39    }
40
41    pub fn max_send_buffer_size(&mut self, max_send_buffer_size: u32) -> &mut Self {
42        self.max_send_buffer_size = max_send_buffer_size;
43        self
44    }
45
46    pub fn socket_send_buffer_size(&mut self, socket_send_buffer_size: u32) -> &mut Self {
47        self.socket_send_buffer_size = socket_send_buffer_size;
48        self
49    }
50
51    pub fn socket_recv_buffer_size(&mut self, socket_recv_buffer_size: u32) -> &mut Self {
52        self.socket_recv_buffer_size = socket_recv_buffer_size;
53        self
54    }
55
56    pub fn build(&self) -> TcpConfig {
57        TcpConfig {
58            auto_pack: self.auto_pack,
59            enable_ipv6: self.enable_ipv6,
60            max_body_size: self.max_body_size,
61            max_send_buffer_size: self.max_send_buffer_size,
62            socket_send_buffer_size: self.socket_send_buffer_size,
63            socket_recv_buffer_size: self.socket_recv_buffer_size,
64        }
65    }
66}
67
68pub struct RpcConfigBuilder {
69    rpc: Option<Rc<rpc_core::rpc::Rpc>>,
70    ping_interval_ms: u32,
71    pong_timeout_ms: u32,
72    enable_ipv6: bool,
73    max_body_size: u32,
74    max_send_buffer_size: u32,
75    socket_send_buffer_size: u32,
76    socket_recv_buffer_size: u32,
77}
78
79impl RpcConfigBuilder {
80    pub fn new() -> Self {
81        RpcConfigBuilder {
82            rpc: None,
83            ping_interval_ms: 0,
84            pong_timeout_ms: 0,
85            enable_ipv6: false,
86            max_body_size: 0,
87            max_send_buffer_size: 0,
88            socket_send_buffer_size: 0,
89            socket_recv_buffer_size: 0,
90        }
91    }
92
93    pub fn rpc(mut self, rpc: Option<Rc<rpc_core::rpc::Rpc>>) -> Self {
94        self.rpc = rpc;
95        self
96    }
97
98    pub fn ping_interval_ms(mut self, ping_interval_ms: u32) -> Self {
99        self.ping_interval_ms = ping_interval_ms;
100        self
101    }
102
103    pub fn pong_timeout_ms(mut self, pong_timeout_ms: u32) -> Self {
104        self.pong_timeout_ms = pong_timeout_ms;
105        self
106    }
107
108    pub fn enable_ipv6(mut self, enable_ipv6: bool) -> Self {
109        self.enable_ipv6 = enable_ipv6;
110        self
111    }
112
113    pub fn max_body_size(mut self, max_body_size: u32) -> Self {
114        self.max_body_size = max_body_size;
115        self
116    }
117
118    pub fn max_send_buffer_size(mut self, max_send_buffer_size: u32) -> Self {
119        self.max_send_buffer_size = max_send_buffer_size;
120        self
121    }
122
123    pub fn socket_send_buffer_size(mut self, socket_send_buffer_size: u32) -> Self {
124        self.socket_send_buffer_size = socket_send_buffer_size;
125        self
126    }
127
128    pub fn socket_recv_buffer_size(mut self, socket_recv_buffer_size: u32) -> Self {
129        self.socket_recv_buffer_size = socket_recv_buffer_size;
130        self
131    }
132
133    pub fn build(self) -> RpcConfig {
134        RpcConfig {
135            rpc: self.rpc,
136            ping_interval_ms: self.ping_interval_ms,
137            pong_timeout_ms: self.pong_timeout_ms,
138            enable_ipv6: self.enable_ipv6,
139            max_body_size: self.max_body_size,
140            max_send_buffer_size: self.max_send_buffer_size,
141            socket_send_buffer_size: self.socket_send_buffer_size,
142            socket_recv_buffer_size: self.socket_recv_buffer_size,
143        }
144    }
145}