@@ -126,15 +126,15 @@ impl VssStore {
126
126
Ok ( keys)
127
127
}
128
128
129
- fn read_internal (
129
+ async fn read_internal (
130
130
& self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
131
131
) -> io:: Result < Vec < u8 > > {
132
132
check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "read" ) ?;
133
133
let request = GetObjectRequest {
134
134
store_id : self . store_id . clone ( ) ,
135
135
key : self . build_key ( primary_namespace, secondary_namespace, key) ?,
136
136
} ;
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| {
138
138
let msg = format ! (
139
139
"Failed to read from key {}/{}/{}: {}" ,
140
140
primary_namespace, secondary_namespace, key, e
@@ -144,6 +144,7 @@ impl VssStore {
144
144
_ => Error :: new ( ErrorKind :: Other , msg) ,
145
145
}
146
146
} ) ?;
147
+
147
148
// unwrap safety: resp.value must be always present for a non-erroneous VSS response, otherwise
148
149
// it is an API-violation which is converted to [`VssError::InternalServerError`] in [`VssClient`]
149
150
let storable = Storable :: decode ( & resp. value . unwrap ( ) . value [ ..] ) . map_err ( |e| {
@@ -157,7 +158,7 @@ impl VssStore {
157
158
Ok ( self . storable_builder . deconstruct ( storable) ?. 0 )
158
159
}
159
160
160
- fn write_internal (
161
+ async fn write_internal (
161
162
& self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
162
163
) -> io:: Result < ( ) > {
163
164
check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "write" ) ?;
@@ -174,7 +175,7 @@ impl VssStore {
174
175
delete_items : vec ! [ ] ,
175
176
} ;
176
177
177
- self . runtime . block_on ( self . client . put_object ( & request) ) . map_err ( |e| {
178
+ self . client . put_object ( & request) . await . map_err ( |e| {
178
179
let msg = format ! (
179
180
"Failed to write to key {}/{}/{}: {}" ,
180
181
primary_namespace, secondary_namespace, key, e
@@ -185,7 +186,7 @@ impl VssStore {
185
186
Ok ( ( ) )
186
187
}
187
188
188
- fn remove_internal (
189
+ async fn remove_internal (
189
190
& self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
190
191
) -> io:: Result < ( ) > {
191
192
check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "remove" ) ?;
@@ -198,25 +199,24 @@ impl VssStore {
198
199
} ) ,
199
200
} ;
200
201
201
- self . runtime . block_on ( self . client . delete_object ( & request) ) . map_err ( |e| {
202
+ self . client . delete_object ( & request) . await . map_err ( |e| {
202
203
let msg = format ! (
203
204
"Failed to delete key {}/{}/{}: {}" ,
204
205
primary_namespace, secondary_namespace, key, e
205
206
) ;
206
207
Error :: new ( ErrorKind :: Other , msg)
207
208
} ) ?;
209
+
208
210
Ok ( ( ) )
209
211
}
210
212
211
- fn list_internal (
213
+ async fn list_internal (
212
214
& self , primary_namespace : & str , secondary_namespace : & str ,
213
215
) -> io:: Result < Vec < String > > {
214
216
check_namespace_key_validity ( primary_namespace, secondary_namespace, None , "list" ) ?;
215
217
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| {
220
220
let msg = format ! (
221
221
"Failed to retrieve keys in namespace: {}/{} : {}" ,
222
222
primary_namespace, secondary_namespace, e
@@ -232,23 +232,27 @@ impl KVStoreSync for VssStore {
232
232
fn read (
233
233
& self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
234
234
) -> 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)
236
237
}
237
238
238
239
fn write (
239
240
& self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
240
241
) -> 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)
242
244
}
243
245
244
246
fn remove (
245
247
& self , primary_namespace : & str , secondary_namespace : & str , key : & str , lazy : bool ,
246
248
) -> 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)
248
251
}
249
252
250
253
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)
252
256
}
253
257
}
254
258
0 commit comments