Skip to main content

fedimint_hbbft/subset/
error.rs

1use thiserror::Error;
2
3use std::result;
4
5use crate::binary_agreement;
6use crate::broadcast;
7
8/// A subset error.
9#[derive(Clone, PartialEq, Eq, Debug, Error)]
10pub enum Error {
11    /// Error creating `BinaryAgreement`.
12    #[error("Error creating BinaryAgreement: {0}")]
13    NewAgreement(binary_agreement::Error),
14    /// Error creating `Broadcast`.
15    #[error("Error creating Broadcast: {0}")]
16    NewBroadcast(broadcast::Error),
17    /// Error handling a `Broadcast` input or message.
18    #[error("Error handling Broadcast input/message: {0}")]
19    HandleBroadcast(broadcast::Error),
20    /// Error handling a `BinaryAgreement` input or message.
21    #[error("Error handling BinaryAgreement input/message: {0}")]
22    HandleAgreement(binary_agreement::Error),
23    /// Unknown proposer.
24    #[error("Unknown proposer ID")]
25    UnknownProposer,
26}
27
28/// A subset result.
29pub type Result<T> = result::Result<T, Error>;
30
31/// Faults that can be detected in Subset.
32#[derive(Clone, Debug, Error, PartialEq, Eq)]
33pub enum FaultKind {
34    /// `Subset` received a faulty Broadcast message.
35    #[error("`Subset` received a faulty Broadcast message.")]
36    BroadcastFault(broadcast::FaultKind),
37    /// `Subset` received a faulty Binary Agreement message.
38    #[error("`Subset` received a faulty Binary Agreement message.")]
39    BaFault(binary_agreement::FaultKind),
40}