forest/message_pool/
errors.rs1use crate::chain::Error as ChainError;
5use fvm_ipld_encoding::Error as EncodeError;
6use thiserror::Error;
7
8#[derive(Debug, PartialEq, Eq, Error)]
10pub enum Error {
11 #[error("Message is too big")]
13 MessageTooBig,
14 #[error("gas price is lower than min gas price")]
15 GasPriceTooLow,
16 #[error("gas fee cap is too low")]
17 GasFeeCapTooLow,
18 #[error("Cannot send more Filecoin than will ever exist")]
19 MessageValueTooHigh,
20 #[error("Message sequence too low")]
21 SequenceTooLow,
22 #[error("Not enough funds to execute transaction")]
23 NotEnoughFunds,
24 #[cfg(test)]
25 #[error("Invalid to address for message")]
26 InvalidToAddr,
27 #[error("Invalid from address")]
28 InvalidFromAddr,
29 #[error("Message with sequence already in mempool")]
30 DuplicateSequence,
31 #[error("unfulfilled nonce gap")]
32 NonceGap,
33 #[error("Validation Error: {0}")]
34 SoftValidationFailure(String),
35 #[error("Too many pending messages from actor {0} (trusted: {1})")]
36 TooManyPendingMessages(String, bool),
37 #[error("{0}")]
38 Other(String),
39}
40
41impl From<ChainError> for Error {
42 fn from(ce: ChainError) -> Self {
43 Error::Other(ce.to_string())
44 }
45}
46
47impl From<EncodeError> for Error {
48 fn from(ee: EncodeError) -> Self {
49 Error::Other(ee.to_string())
50 }
51}
52
53impl From<anyhow::Error> for Error {
54 fn from(e: anyhow::Error) -> Self {
55 Error::Other(format!("{e:#}"))
56 }
57}