@@ -10,6 +10,7 @@ use crate::server::conn::ServerToWriteMessage;
10
10
use crate :: server:: increase_in_window:: ServerIncreaseInWindow ;
11
11
use crate :: server:: stream_handler:: ServerRequestStreamHandler ;
12
12
use crate :: server:: stream_handler:: ServerRequestStreamHandlerHolder ;
13
+ use crate :: EndStream ;
13
14
use crate :: Headers ;
14
15
use crate :: StreamAfterHeaders ;
15
16
use crate :: StreamId ;
@@ -19,7 +20,7 @@ pub struct ServerRequest<'a> {
19
20
/// Request headers.
20
21
pub headers : Headers ,
21
22
/// True if requests ends with headers (no body).
22
- pub end_stream : bool ,
23
+ pub end_stream : EndStream ,
23
24
pub ( crate ) stream_id : StreamId ,
24
25
/// Stream in window size at the moment of request start
25
26
pub ( crate ) in_window_size : u32 ,
@@ -31,16 +32,19 @@ pub struct ServerRequest<'a> {
31
32
impl < ' a > ServerRequest < ' a > {
32
33
/// Convert a request into a pullable stream.
33
34
pub fn into_stream ( self ) -> impl StreamAfterHeaders {
34
- if self . end_stream {
35
- Box :: pin ( HttpStreamAfterHeadersEmpty )
36
- } else {
37
- let conn_died = self . conn_died . clone ( ) ;
38
- self . register_stream_handler :: < _ , _ , StreamAfterHeadersBox > ( move |increase_in_window| {
39
- let ( inc_tx, inc_rx) = stream_queue_sync ( conn_died) ;
40
- let stream_from_network = StreamFromNetwork :: new ( inc_rx, increase_in_window. 0 ) ;
41
-
42
- ( inc_tx, Box :: pin ( stream_from_network) )
43
- } )
35
+ match self . end_stream {
36
+ EndStream :: Yes => Box :: pin ( HttpStreamAfterHeadersEmpty ) ,
37
+ EndStream :: No => {
38
+ let conn_died = self . conn_died . clone ( ) ;
39
+ self . register_stream_handler :: < _ , _ , StreamAfterHeadersBox > (
40
+ move |increase_in_window| {
41
+ let ( inc_tx, inc_rx) = stream_queue_sync ( conn_died) ;
42
+ let stream_from_network =
43
+ StreamFromNetwork :: new ( inc_rx, increase_in_window. 0 ) ;
44
+ ( inc_tx, Box :: pin ( stream_from_network) )
45
+ } ,
46
+ )
47
+ }
44
48
}
45
49
}
46
50
0 commit comments