@@ -126,15 +126,15 @@ impl VssStore {
126126 Ok ( keys)
127127 }
128128
129- fn read_internal (
129+ async fn read_internal (
130130 & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
131131 ) -> io:: Result < Vec < u8 > > {
132132 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "read" ) ?;
133133 let request = GetObjectRequest {
134134 store_id : self . store_id . clone ( ) ,
135135 key : self . build_key ( primary_namespace, secondary_namespace, key) ?,
136136 } ;
137- let resp = self . runtime . block_on ( self . client . get_object ( & request) ) . map_err ( |e| {
137+ let resp = self . client . get_object ( & request) . await . map_err ( |e| {
138138 let msg = format ! (
139139 "Failed to read from key {}/{}/{}: {}" ,
140140 primary_namespace, secondary_namespace, key, e
@@ -144,6 +144,7 @@ impl VssStore {
144144 _ => Error :: new ( ErrorKind :: Other , msg) ,
145145 }
146146 } ) ?;
147+
147148 // unwrap safety: resp.value must be always present for a non-erroneous VSS response, otherwise
148149 // it is an API-violation which is converted to [`VssError::InternalServerError`] in [`VssClient`]
149150 let storable = Storable :: decode ( & resp. value . unwrap ( ) . value [ ..] ) . map_err ( |e| {
@@ -157,7 +158,7 @@ impl VssStore {
157158 Ok ( self . storable_builder . deconstruct ( storable) ?. 0 )
158159 }
159160
160- fn write_internal (
161+ async fn write_internal (
161162 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
162163 ) -> io:: Result < ( ) > {
163164 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "write" ) ?;
@@ -174,7 +175,7 @@ impl VssStore {
174175 delete_items : vec ! [ ] ,
175176 } ;
176177
177- self . runtime . block_on ( self . client . put_object ( & request) ) . map_err ( |e| {
178+ self . client . put_object ( & request) . await . map_err ( |e| {
178179 let msg = format ! (
179180 "Failed to write to key {}/{}/{}: {}" ,
180181 primary_namespace, secondary_namespace, key, e
@@ -185,7 +186,7 @@ impl VssStore {
185186 Ok ( ( ) )
186187 }
187188
188- fn remove_internal (
189+ async fn remove_internal (
189190 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
190191 ) -> io:: Result < ( ) > {
191192 check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "remove" ) ?;
@@ -198,25 +199,24 @@ impl VssStore {
198199 } ) ,
199200 } ;
200201
201- self . runtime . block_on ( self . client . delete_object ( & request) ) . map_err ( |e| {
202+ self . client . delete_object ( & request) . await . map_err ( |e| {
202203 let msg = format ! (
203204 "Failed to delete key {}/{}/{}: {}" ,
204205 primary_namespace, secondary_namespace, key, e
205206 ) ;
206207 Error :: new ( ErrorKind :: Other , msg)
207208 } ) ?;
209+
208210 Ok ( ( ) )
209211 }
210212
211- fn list_internal (
213+ async fn list_internal (
212214 & self , primary_namespace : & str , secondary_namespace : & str ,
213215 ) -> io:: Result < Vec < String > > {
214216 check_namespace_key_validity ( primary_namespace, secondary_namespace, None , "list" ) ?;
215217
216- let keys = self
217- . runtime
218- . block_on ( self . list_all_keys ( primary_namespace, secondary_namespace) )
219- . map_err ( |e| {
218+ let keys =
219+ self . list_all_keys ( primary_namespace, secondary_namespace) . await . map_err ( |e| {
220220 let msg = format ! (
221221 "Failed to retrieve keys in namespace: {}/{} : {}" ,
222222 primary_namespace, secondary_namespace, e
@@ -232,23 +232,27 @@ impl KVStoreSync for VssStore {
232232 fn read (
233233 & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
234234 ) -> io:: Result < Vec < u8 > > {
235- self . read_internal ( primary_namespace, secondary_namespace, key)
235+ let fut = self . read_internal ( primary_namespace, secondary_namespace, key) ;
236+ self . runtime . block_on ( fut)
236237 }
237238
238239 fn write (
239240 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
240241 ) -> io:: Result < ( ) > {
241- self . write_internal ( primary_namespace, secondary_namespace, key, buf)
242+ let fut = self . write_internal ( primary_namespace, secondary_namespace, key, buf) ;
243+ self . runtime . block_on ( fut)
242244 }
243245
244246 fn remove (
245247 & self , primary_namespace : & str , secondary_namespace : & str , key : & str , lazy : bool ,
246248 ) -> io:: Result < ( ) > {
247- self . remove_internal ( primary_namespace, secondary_namespace, key, lazy)
249+ let fut = self . remove_internal ( primary_namespace, secondary_namespace, key, lazy) ;
250+ self . runtime . block_on ( fut)
248251 }
249252
250253 fn list ( & self , primary_namespace : & str , secondary_namespace : & str ) -> io:: Result < Vec < String > > {
251- self . list_internal ( primary_namespace, secondary_namespace)
254+ let fut = self . list_internal ( primary_namespace, secondary_namespace) ;
255+ self . runtime . block_on ( fut)
252256 }
253257}
254258
0 commit comments