Replace gRPC Backend (#10)
**Rationale:** Having two separate servers and communication methods resulted in additional maintenance & the need to convert often between backend & frontend data types. By moving the backend communication off of gRPC and to just use websockets it both gives more control & allows for simplification of the implementation. #8 **Changes:** - Replaces gRPC backend. - New implementation automatically handles reconnect logic - Implements an api layer - Migrates examples to the api layer - Implements a proc macro to make command handling easier - Implements unit tests for the api layer (90+% coverage) - Implements integration tests for the proc macro (90+% coverage) Reviewed-on: #10 Co-authored-by: Sergey Savelyev <sergeysav.nn@gmail.com> Co-committed-by: Sergey Savelyev <sergeysav.nn@gmail.com>
This commit was merged in pull request #10.
This commit is contained in:
37
api/src/client/error.rs
Normal file
37
api/src/client/error.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use api_core::data_type::DataType;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum ConnectError {
|
||||
#[error(transparent)]
|
||||
TungsteniteError(#[from] tokio_tungstenite::tungstenite::Error),
|
||||
#[error(transparent)]
|
||||
IoError(#[from] std::io::Error),
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum MessageError {
|
||||
#[error(transparent)]
|
||||
TokioSendError(#[from] tokio::sync::mpsc::error::SendError<()>),
|
||||
#[error(transparent)]
|
||||
TokioTrySendError(#[from] tokio::sync::mpsc::error::TrySendError<()>),
|
||||
#[error(transparent)]
|
||||
TokioLockError(#[from] tokio::sync::TryLockError),
|
||||
#[error("Incorrect Data Type. {expected} expected. {actual} actual.")]
|
||||
IncorrectDataType {
|
||||
expected: DataType,
|
||||
actual: DataType,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum RequestError<E> {
|
||||
#[error(transparent)]
|
||||
TokioSendError(#[from] tokio::sync::mpsc::error::SendError<()>),
|
||||
#[error(transparent)]
|
||||
TokioLockError(#[from] tokio::sync::TryLockError),
|
||||
#[error(transparent)]
|
||||
RecvError(#[from] tokio::sync::oneshot::error::RecvError),
|
||||
#[error(transparent)]
|
||||
Inner(E),
|
||||
}
|
||||
Reference in New Issue
Block a user