@@ -24,6 +24,8 @@ pub struct ServerBuilder<M: core::Metadata, S: core::Middleware<M>> {
2424 executor : UninitializedExecutor ,
2525 max_connections : usize ,
2626 max_payload_bytes : usize ,
27+ max_in_buffer_capacity : usize ,
28+ max_out_buffer_capacity : usize ,
2729}
2830
2931impl < M : core:: Metadata + Default , S : core:: Middleware < M > > ServerBuilder < M , S >
6163 executor : UninitializedExecutor :: Unspawned ,
6264 max_connections : 100 ,
6365 max_payload_bytes : 5 * 1024 * 1024 ,
66+ max_in_buffer_capacity : 10 * 1024 * 1024 ,
67+ max_out_buffer_capacity : 10 * 1024 * 1024 ,
6468 }
6569 }
6670
@@ -115,6 +119,20 @@ where
115119 self
116120 }
117121
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+
118136 /// Starts a new `WebSocket` server in separate thread.
119137 /// Returns a `Server` handle which closes the server when droped.
120138 pub fn start ( self , addr : & SocketAddr ) -> Result < Server > {
@@ -129,6 +147,51 @@ where
129147 self . executor ,
130148 self . max_connections ,
131149 self . max_payload_bytes ,
150+ self . max_in_buffer_capacity ,
151+ self . max_out_buffer_capacity ,
132152 )
133153 }
134154}
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