@@ -127,15 +127,15 @@ impl VssStore {
127127 Ok ( keys)
128128 }
129129
130- fn read_internal (
130+ async fn read_internal (
131131 & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
132132 ) -> io:: Result < Vec < u8 > > {
133133 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "read" ) ?;
134134 let request = GetObjectRequest {
135135 store_id : self . store_id . clone ( ) ,
136136 key : self . build_key ( primary_namespace, secondary_namespace, key) ?,
137137 } ;
138- let resp = self . runtime . block_on ( self . client . get_object ( & request) ) . map_err ( |e| {
138+ let resp = self . client . get_object ( & request) . await . map_err ( |e| {
139139 let msg = format ! (
140140 "Failed to read from key {}/{}/{}: {}" ,
141141 primary_namespace, secondary_namespace, key, e
@@ -145,6 +145,7 @@ impl VssStore {
145145 _ => Error :: new ( ErrorKind :: Other , msg) ,
146146 }
147147 } ) ?;
148+
148149 // unwrap safety: resp.value must be always present for a non-erroneous VSS response, otherwise
149150 // it is an API-violation which is converted to [`VssError::InternalServerError`] in [`VssClient`]
150151 let storable = Storable :: decode ( & resp. value . unwrap ( ) . value [ ..] ) . map_err ( |e| {
@@ -158,7 +159,7 @@ impl VssStore {
158159 Ok ( self . storable_builder . deconstruct ( storable) ?. 0 )
159160 }
160161
161- fn write_internal (
162+ async fn write_internal (
162163 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
163164 ) -> io:: Result < ( ) > {
164165 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "write" ) ?;
@@ -175,7 +176,7 @@ impl VssStore {
175176 delete_items : vec ! [ ] ,
176177 } ;
177178
178- self . runtime . block_on ( self . client . put_object ( & request) ) . map_err ( |e| {
179+ self . client . put_object ( & request) . await . map_err ( |e| {
179180 let msg = format ! (
180181 "Failed to write to key {}/{}/{}: {}" ,
181182 primary_namespace, secondary_namespace, key, e
@@ -186,7 +187,7 @@ impl VssStore {
186187 Ok ( ( ) )
187188 }
188189
189- fn remove_internal (
190+ async fn remove_internal (
190191 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
191192 ) -> io:: Result < ( ) > {
192193 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "remove" ) ?;
@@ -199,25 +200,24 @@ impl VssStore {
199200 } ) ,
200201 } ;
201202
202- self . runtime . block_on ( self . client . delete_object ( & request) ) . map_err ( |e| {
203+ self . client . delete_object ( & request) . await . map_err ( |e| {
203204 let msg = format ! (
204205 "Failed to delete key {}/{}/{}: {}" ,
205206 primary_namespace, secondary_namespace, key, e
206207 ) ;
207208 Error :: new ( ErrorKind :: Other , msg)
208209 } ) ?;
210+
209211 Ok ( ( ) )
210212 }
211213
212- fn list_internal (
214+ async fn list_internal (
213215 & self , primary_namespace : & str , secondary_namespace : & str ,
214216 ) -> io:: Result < Vec < String > > {
215217 check_namespace_key_validity ( primary_namespace, secondary_namespace, None , "list" ) ?;
216218
217- let keys = self
218- . runtime
219- . block_on ( self . list_all_keys ( primary_namespace, secondary_namespace) )
220- . map_err ( |e| {
219+ let keys =
220+ self . list_all_keys ( primary_namespace, secondary_namespace) . await . map_err ( |e| {
221221 let msg = format ! (
222222 "Failed to retrieve keys in namespace: {}/{} : {}" ,
223223 primary_namespace, secondary_namespace, e
@@ -233,23 +233,27 @@ impl KVStoreSync for VssStore {
233233 fn read (
234234 & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
235235 ) -> io:: Result < Vec < u8 > > {
236- self . read_internal ( primary_namespace, secondary_namespace, key)
236+ let fut = self . read_internal ( primary_namespace, secondary_namespace, key) ;
237+ self . runtime . block_on ( fut)
237238 }
238239
239240 fn write (
240241 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
241242 ) -> io:: Result < ( ) > {
242- self . write_internal ( primary_namespace, secondary_namespace, key, buf)
243+ let fut = self . write_internal ( primary_namespace, secondary_namespace, key, buf) ;
244+ self . runtime . block_on ( fut)
243245 }
244246
245247 fn remove (
246248 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , lazy : bool ,
247249 ) -> io:: Result < ( ) > {
248- self . remove_internal ( primary_namespace, secondary_namespace, key, lazy)
250+ let fut = self . remove_internal ( primary_namespace, secondary_namespace, key, lazy) ;
251+ self . runtime . block_on ( fut)
249252 }
250253
251254 fn list ( & self , primary_namespace : & str , secondary_namespace : & str ) -> io:: Result < Vec < String > > {
252- self . list_internal ( primary_namespace, secondary_namespace)
255+ let fut = self . list_internal ( primary_namespace, secondary_namespace) ;
256+ self . runtime . block_on ( fut)
253257 }
254258}
255259
0 commit comments