Skip to main content

de_mls/app/
error.rs

1//! Error type for the app layer.
2
3use std::time::SystemTimeError;
4
5use hashgraph_like_consensus::error::ConsensusError;
6
7use crate::{core::CoreError, ds::DeliveryServiceError, mls_crypto::MlsError};
8
9/// Errors from User operations.
10#[derive(Debug, thiserror::Error)]
11pub enum UserError {
12    #[error("Conversation already exists")]
13    ConversationAlreadyExists,
14
15    #[error("Conversation not found")]
16    ConversationNotFound,
17
18    #[error("Already leaving this conversation")]
19    AlreadyLeaving,
20
21    #[error("Cannot send message: conversation is in {0} state")]
22    ConversationBlocked(String),
23
24    #[error(
25        "Lower-priority proposal blocked: an emergency criteria proposal is active (RFC partial freeze)"
26    )]
27    PartialFreeze,
28
29    #[error("Transport error: {0}")]
30    Transport(#[from] DeliveryServiceError),
31
32    #[error("Core error: {0}")]
33    Core(#[from] CoreError),
34
35    #[error("Consensus error: {0}")]
36    Consensus(#[from] ConsensusError),
37
38    #[error("Message error: {0}")]
39    Message(#[from] prost::DecodeError),
40
41    #[error("System time error: {0}")]
42    SystemTime(#[from] SystemTimeError),
43
44    #[error("MLS error: {0}")]
45    Mls(#[from] MlsError),
46
47    #[error("Lock poisoned: {0}")]
48    LockPoisoned(&'static str),
49}