core_crypto/transaction_context/
error.rs1#![allow(missing_docs)]
3
4use super::e2e_identity;
5use crate::mls::conversation::pending_conversation::PendingConversation;
6
7pub type Result<T, E = Error> = core::result::Result<T, E>;
9
10#[derive(Debug, thiserror::Error)]
12pub enum Error {
13 #[error("caller error: {0}")]
14 CallerError(&'static str),
15 #[error("This transaction context has already been finished and can no longer be used.")]
16 InvalidTransactionContext,
17 #[error("The conversation with the specified id is pending")]
18 PendingConversation(PendingConversation),
19 #[error("Couldn't find client")]
20 ClientNotFound(crate::ClientId),
21 #[error("Proteus client hasn't been initialized")]
22 ProteusNotInitialized,
23 #[error("Serializing {item} for TLS")]
24 TlsSerialize {
25 item: &'static str,
26 #[source]
27 source: tls_codec::Error,
28 },
29 #[error("Deserializing {item} for TLS")]
30 TlsDeserialize {
31 item: &'static str,
32 #[source]
33 source: tls_codec::Error,
34 },
35 #[error(transparent)]
36 E2EIdentity(#[from] e2e_identity::Error),
37 #[error(transparent)]
38 Keystore(#[from] crate::KeystoreError),
39 #[error(transparent)]
40 Mls(#[from] crate::MlsError),
41 #[error("{0}")]
42 Leaf(#[from] crate::LeafError),
43 #[error(transparent)]
44 Recursive(#[from] crate::RecursiveError),
45}
46
47impl Error {
48 pub fn tls_serialize(item: &'static str) -> impl FnOnce(tls_codec::Error) -> Self {
49 move |source| Self::TlsSerialize { item, source }
50 }
51
52 pub fn tls_deserialize(item: &'static str) -> impl FnOnce(tls_codec::Error) -> Self {
53 move |source| Self::TlsDeserialize { item, source }
54 }
55}