@@ -55,26 +55,45 @@ mod codec {
55
55
use libp2p_swarm:: StreamProtocol ;
56
56
use serde:: { de:: DeserializeOwned , Serialize } ;
57
57
58
- /// Max request size in bytes
59
- const REQUEST_SIZE_MAXIMUM : u64 = 1024 * 1024 ;
60
- /// Max response size in bytes
61
- const RESPONSE_SIZE_MAXIMUM : u64 = 10 * 1024 * 1024 ;
62
-
63
58
pub struct Codec < Req , Resp > {
59
+ /// Max request size in bytes.
60
+ request_size_maximum : u64 ,
61
+ /// Max response size in bytes.
62
+ response_size_maximum : u64 ,
64
63
phantom : PhantomData < ( Req , Resp ) > ,
65
64
}
66
65
67
66
impl < Req , Resp > Default for Codec < Req , Resp > {
68
67
fn default ( ) -> Self {
69
68
Codec {
69
+ request_size_maximum : 1024 * 1024 ,
70
+ response_size_maximum : 10 * 1024 * 1024 ,
70
71
phantom : PhantomData ,
71
72
}
72
73
}
73
74
}
74
75
75
76
impl < Req , Resp > Clone for Codec < Req , Resp > {
76
77
fn clone ( & self ) -> Self {
77
- Self :: default ( )
78
+ Self {
79
+ request_size_maximum : self . request_size_maximum ,
80
+ response_size_maximum : self . response_size_maximum ,
81
+ phantom : PhantomData ,
82
+ }
83
+ }
84
+ }
85
+
86
+ impl < Req , Resp > Codec < Req , Resp > {
87
+ /// Sets the limit for request size in bytes.
88
+ pub fn set_request_size_maximum ( mut self , request_size_maximum : u64 ) -> Self {
89
+ self . request_size_maximum = request_size_maximum;
90
+ self
91
+ }
92
+
93
+ /// Sets the limit for response size in bytes.
94
+ pub fn set_response_size_maximum ( mut self , response_size_maximum : u64 ) -> Self {
95
+ self . response_size_maximum = response_size_maximum;
96
+ self
78
97
}
79
98
}
80
99
@@ -94,7 +113,9 @@ mod codec {
94
113
{
95
114
let mut vec = Vec :: new ( ) ;
96
115
97
- io. take ( REQUEST_SIZE_MAXIMUM ) . read_to_end ( & mut vec) . await ?;
116
+ io. take ( self . request_size_maximum )
117
+ . read_to_end ( & mut vec)
118
+ . await ?;
98
119
99
120
cbor4ii:: serde:: from_slice ( vec. as_slice ( ) ) . map_err ( decode_into_io_error)
100
121
}
@@ -105,7 +126,9 @@ mod codec {
105
126
{
106
127
let mut vec = Vec :: new ( ) ;
107
128
108
- io. take ( RESPONSE_SIZE_MAXIMUM ) . read_to_end ( & mut vec) . await ?;
129
+ io. take ( self . response_size_maximum )
130
+ . read_to_end ( & mut vec)
131
+ . await ?;
109
132
110
133
cbor4ii:: serde:: from_slice ( vec. as_slice ( ) ) . map_err ( decode_into_io_error)
111
134
}
0 commit comments