use std::error::Error;
use crate::proxy_wasm::types::Status;
use super::GrpcStatus;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum GrpcCallError {
#[error(transparent)]
Proxy(#[from] GrpcProxyError),
#[error("Invalid upstream '{0}'")]
InvalidUpstream(String),
#[error(transparent)]
Encode(Box<dyn Error + Send + Sync>),
}
#[derive(Debug, thiserror::Error)]
#[error("Proxy status problem: {0:?}")]
pub struct GrpcProxyError(Status);
impl GrpcProxyError {
pub(super) fn new(status: Status) -> Self {
Self(status)
}
}
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum GrpcClientError {
#[error(transparent)]
Call(#[from] GrpcCallError),
#[error("Request awaited on create context event")]
AwaitedOnCreateContext,
#[error("Empty content")]
EmptyContent,
#[error(transparent)]
Decode(Box<dyn Error + Send + Sync>),
#[error("Bad gRPC status: {0}")]
Status(GrpcStatus),
}