@@ -24,6 +24,8 @@ pub struct ServerBuilder<M: core::Metadata, S: core::Middleware<M>> {
24
24
executor : UninitializedExecutor ,
25
25
max_connections : usize ,
26
26
max_payload_bytes : usize ,
27
+ max_in_buffer_capacity : usize ,
28
+ max_out_buffer_capacity : usize ,
27
29
}
28
30
29
31
impl < M : core:: Metadata + Default , S : core:: Middleware < M > > ServerBuilder < M , S >
61
63
executor : UninitializedExecutor :: Unspawned ,
62
64
max_connections : 100 ,
63
65
max_payload_bytes : 5 * 1024 * 1024 ,
66
+ max_in_buffer_capacity : 10 * 1024 * 1024 ,
67
+ max_out_buffer_capacity : 10 * 1024 * 1024 ,
64
68
}
65
69
}
66
70
@@ -115,6 +119,20 @@ where
115
119
self
116
120
}
117
121
122
+ /// The maximum size to which the incoming buffer can grow.
123
+ /// Default: 10,485,760
124
+ pub fn max_in_buffer_capacity ( mut self , max_in_buffer_capacity : usize ) -> Self {
125
+ self . max_in_buffer_capacity = max_in_buffer_capacity;
126
+ self
127
+ }
128
+
129
+ /// The maximum size to which the outgoing buffer can grow.
130
+ /// Default: 10,485,760
131
+ pub fn max_out_buffer_capacity ( mut self , max_out_buffer_capacity : usize ) -> Self {
132
+ self . max_out_buffer_capacity = max_out_buffer_capacity;
133
+ self
134
+ }
135
+
118
136
/// Starts a new `WebSocket` server in separate thread.
119
137
/// Returns a `Server` handle which closes the server when droped.
120
138
pub fn start ( self , addr : & SocketAddr ) -> Result < Server > {
@@ -129,6 +147,51 @@ where
129
147
self . executor ,
130
148
self . max_connections ,
131
149
self . max_payload_bytes ,
150
+ self . max_in_buffer_capacity ,
151
+ self . max_out_buffer_capacity ,
132
152
)
133
153
}
134
154
}
155
+
156
+ #[ cfg( test) ]
157
+ mod tests {
158
+ use super :: * ;
159
+
160
+ fn basic_server_builder ( ) -> ServerBuilder < ( ) , jsonrpc_core:: middleware:: Noop > {
161
+ let io = core:: IoHandler :: default ( ) ;
162
+ ServerBuilder :: new ( io)
163
+ }
164
+ #[ test]
165
+ fn config_usize_vals_have_correct_defaults ( ) {
166
+ let server = basic_server_builder ( ) ;
167
+
168
+ assert_eq ! ( server. max_connections, 100 ) ;
169
+ assert_eq ! ( server. max_payload_bytes, 5 * 1024 * 1024 ) ;
170
+ assert_eq ! ( server. max_in_buffer_capacity, 10 * 1024 * 1024 ) ;
171
+ assert_eq ! ( server. max_out_buffer_capacity, 10 * 1024 * 1024 ) ;
172
+ }
173
+
174
+ #[ test]
175
+ fn config_usize_vals_can_be_set ( ) {
176
+ let server = basic_server_builder ( ) ;
177
+
178
+ // We can set them individually
179
+ let server = server. max_connections ( 10 ) ;
180
+ assert_eq ! ( server. max_connections, 10 ) ;
181
+
182
+ let server = server. max_payload ( 29 ) ;
183
+ assert_eq ! ( server. max_payload_bytes, 29 ) ;
184
+
185
+ let server = server. max_in_buffer_capacity ( 38 ) ;
186
+ assert_eq ! ( server. max_in_buffer_capacity, 38 ) ;
187
+
188
+ let server = server. max_out_buffer_capacity ( 47 ) ;
189
+ assert_eq ! ( server. max_out_buffer_capacity, 47 ) ;
190
+
191
+ // Setting values consecutively does not impact other values
192
+ assert_eq ! ( server. max_connections, 10 ) ;
193
+ assert_eq ! ( server. max_payload_bytes, 29 ) ;
194
+ assert_eq ! ( server. max_in_buffer_capacity, 38 ) ;
195
+ assert_eq ! ( server. max_out_buffer_capacity, 47 ) ;
196
+ }
197
+ }
0 commit comments