This is an automated email from the ASF dual-hosted git repository. mssun pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git
commit 375c894b3a8bf50e6474a687b61a9aa53bec9bfc Author: Mingshen Sun <[email protected]> AuthorDate: Thu Feb 6 13:41:37 2020 -0800 [storage] Polish error handling --- services/storage/enclave/src/proxy.rs | 4 ++-- services/storage/enclave/src/service.rs | 42 ++++++++++++++++----------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/services/storage/enclave/src/proxy.rs b/services/storage/enclave/src/proxy.rs index f710a5a..085327f 100644 --- a/services/storage/enclave/src/proxy.rs +++ b/services/storage/enclave/src/proxy.rs @@ -26,10 +26,10 @@ impl teaclave_rpc::TeaclaveService<TeaclaveStorageRequest, TeaclaveStorageRespon let (sender, receiver) = channel(); self.sender .send(ProxyRequest { sender, request }) - .map_err(|_| TeaclaveStorageError::MpscError)?; + .map_err(|_| TeaclaveStorageError::Connection)?; receiver .recv() - .map_err(|_| TeaclaveStorageError::MpscError)? + .map_err(|_| TeaclaveStorageError::Connection)? } } diff --git a/services/storage/enclave/src/service.rs b/services/storage/enclave/src/service.rs index 1b056eb..4e00e76 100644 --- a/services/storage/enclave/src/service.rs +++ b/services/storage/enclave/src/service.rs @@ -14,14 +14,12 @@ use thiserror::Error; #[derive(Error, Debug)] pub(crate) enum TeaclaveStorageError { - #[error("key not exist")] - KeyNotExist, - #[error("mpsc error")] - MpscError, + #[error("connection error")] + Connection, #[error("leveldb error")] - LevelDbError, - #[error("queue empty")] - QueueEmpty, + LevelDb(#[from] rusty_leveldb::Status), + #[error("none error")] + None, } impl From<TeaclaveStorageError> for TeaclaveServiceResponseError { @@ -107,12 +105,12 @@ impl<'a> DBQueue<'a> { // put element self.database .put(&self.get_element_key(tail_index), value) - .map_err(|_| TeaclaveStorageError::LevelDbError)?; + .map_err(TeaclaveStorageError::LevelDb)?; // tail + 1 tail_index += 1; self.database .put(&self.get_tail_key(), &tail_index.to_le_bytes()) - .map_err(|_| TeaclaveStorageError::LevelDbError)?; + .map_err(TeaclaveStorageError::LevelDb)?; Ok(()) } @@ -121,18 +119,18 @@ impl<'a> DBQueue<'a> { let tail_index = self.get_tail(); // check whether the queue is empty if head_index >= tail_index { - Err(TeaclaveStorageError::QueueEmpty.into()) + Err(TeaclaveStorageError::None.into()) } else { let element_key = self.get_element_key(head_index); let result = match self.database.get(&element_key) { Some(value) => value, - None => return Err(TeaclaveStorageError::LevelDbError.into()), + None => return Err(TeaclaveStorageError::None.into()), }; // update head head_index += 1; self.database .put(&self.get_head_key(), &head_index.to_le_bytes()) - .map_err(|_| TeaclaveStorageError::LevelDbError)?; + .map_err(TeaclaveStorageError::LevelDb)?; // delete element; it's ok to ignore the error let _ = self.database.delete(&element_key); Ok(result) @@ -169,16 +167,17 @@ impl TeaclaveStorage for TeaclaveStorageService { let request = request.message; match self.database.borrow_mut().get(&request.key) { Some(value) => Ok(GetResponse { value }), - None => Err(TeaclaveStorageError::KeyNotExist.into()), + None => Err(TeaclaveStorageError::None.into()), } } fn put(&self, request: Request<PutRequest>) -> TeaclaveServiceResponseResult<PutResponse> { let request = request.message; - match self.database.borrow_mut().put(&request.key, &request.value) { - Ok(_) => Ok(PutResponse), - Err(_) => Err(TeaclaveStorageError::LevelDbError.into()), - } + self.database + .borrow_mut() + .put(&request.key, &request.value) + .map_err(TeaclaveStorageError::LevelDb)?; + Ok(PutResponse) } fn delete( @@ -186,10 +185,11 @@ impl TeaclaveStorage for TeaclaveStorageService { request: Request<DeleteRequest>, ) -> TeaclaveServiceResponseResult<DeleteResponse> { let request = request.message; - match self.database.borrow_mut().delete(&request.key) { - Ok(_) => Ok(DeleteResponse), - Err(_) => Err(TeaclaveStorageError::LevelDbError.into()), - } + self.database + .borrow_mut() + .delete(&request.key) + .map_err(TeaclaveStorageError::LevelDb)?; + Ok(DeleteResponse) } fn enqueue( --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
