Skip to content

Commit 8d26c63

Browse files
committed
Make VSS internal methods async, move block_on to impl KVStoreSync
.. as we're gonna reuse the `async` `_internal` methods shortly.
1 parent 51eadb8 commit 8d26c63

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/io/vss_store.rs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)