1111// select! in WS transport
1212#![ recursion_limit = "256" ]
1313
14+ use std:: time:: Duration ;
15+
1416use headers:: HeaderMap ;
1517use jsonrpc_core as rpc;
1618
@@ -53,18 +55,30 @@ pub trait Transport: std::fmt::Debug + Clone {
5355 fn prepare ( & self , method : & str , params : Vec < rpc:: Value > ) -> ( RequestId , rpc:: Call ) ;
5456
5557 /// Execute prepared RPC call.
56- fn send ( & self , id : RequestId , request : rpc:: Call , headers : Option < HeaderMap > ) -> Self :: Out ;
58+ fn send (
59+ & self ,
60+ id : RequestId ,
61+ request : rpc:: Call ,
62+ headers : Option < HeaderMap > ,
63+ timeout : Option < Duration > ,
64+ ) -> Self :: Out ;
5765
5866 /// Execute remote method with given parameters.
5967 fn execute ( & self , method : & str , params : Vec < rpc:: Value > ) -> Self :: Out {
6068 let ( id, request) = self . prepare ( method, params) ;
61- self . send ( id, request, None )
69+ self . send ( id, request, None , None )
6270 }
6371
6472 /// Execute remote method with given parameters and headers.
65- fn execute_with_headers ( & self , method : & str , params : Vec < rpc:: Value > , headers : Option < HeaderMap > ) -> Self :: Out {
73+ fn execute_with_headers (
74+ & self ,
75+ method : & str ,
76+ params : Vec < rpc:: Value > ,
77+ headers : Option < HeaderMap > ,
78+ timeout : Option < Duration > ,
79+ ) -> Self :: Out {
6680 let ( id, request) = self . prepare ( method, params) ;
67- self . send ( id, request, headers)
81+ self . send ( id, request, headers, timeout )
6882 }
6983}
7084
@@ -104,8 +118,14 @@ where
104118 ( * * self ) . prepare ( method, params)
105119 }
106120
107- fn send ( & self , id : RequestId , request : rpc:: Call , headers : Option < HeaderMap > ) -> Self :: Out {
108- ( * * self ) . send ( id, request, headers)
121+ fn send (
122+ & self ,
123+ id : RequestId ,
124+ request : rpc:: Call ,
125+ headers : Option < HeaderMap > ,
126+ timeout : Option < Duration > ,
127+ ) -> Self :: Out {
128+ ( * * self ) . send ( id, request, headers, timeout)
109129 }
110130}
111131
@@ -151,7 +171,7 @@ mod tests {
151171 use crate :: api:: Web3 ;
152172 use futures:: future:: BoxFuture ;
153173 use headers:: HeaderMap ;
154- use std:: sync:: Arc ;
174+ use std:: { sync:: Arc , time :: Duration } ;
155175
156176 #[ derive( Debug , Clone ) ]
157177 struct FakeTransport ;
@@ -163,7 +183,13 @@ mod tests {
163183 unimplemented ! ( )
164184 }
165185
166- fn send ( & self , _id : RequestId , _request : rpc:: Call , _headers : Option < HeaderMap > ) -> Self :: Out {
186+ fn send (
187+ & self ,
188+ _id : RequestId ,
189+ _request : rpc:: Call ,
190+ _headers : Option < HeaderMap > ,
191+ _timeout : Option < Duration > ,
192+ ) -> Self :: Out {
167193 unimplemented ! ( )
168194 }
169195 }
0 commit comments