#[non_exhaustive]pub enum ControlErrorCode {
Show 14 variants
ParseError,
InvalidRequest,
MethodNotFound,
InvalidParams,
DispatchFailed,
Unauthorized,
NotSupported,
ControlError,
WalletNoChainSource,
WalletNotSynced,
WalletReadFailed,
WalletRateLimited,
WalletCoinsReserved,
WalletReservationsUnavailable,
}Expand description
A canonical control-plane error code.
#[non_exhaustive] so adding a code in a minor release is additive; downstream matches must use
a _ => … arm.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ParseError
-32700 — request body was not valid JSON.
InvalidRequest
-32600 — the request was not a single JSON-RPC object (batches are unsupported).
MethodNotFound
-32601 — the control method is not resolved by the node.
InvalidParams
-32602 — invalid or missing method parameters.
DispatchFailed
-32000 — the node failed to dispatch a well-formed control call.
-32030 — a control.* method was called without a valid local control token.
NotSupported
-32031 — the control operation is not supported on this node build (e.g. §21 sync with no
identity loaded, or a capability the running engine does not expose).
ControlError
-32032 — a control operation failed at runtime (e.g. a config write or cache op errored).
WalletNoChainSource
-32040 — a wallet chain read had NO live chain source able to answer. Reported instead of
a fabricated empty answer: nothing was consulted, so nothing is known.
WalletNotSynced
-32041 — a wallet chain read of the wallet’s OWN address while its local replica is still
syncing and no fallback is attached: nothing can answer YET.
WalletReadFailed
-32042 — a wallet chain read failed at the underlying DB / chain-source layer.
WalletRateLimited
-32043 — a wallet chain read was refused because the global fallback rate bound is spent.
The caller should back off and retry; the answer is unknown, not empty.
WalletCoinsReserved
-32044 — one or more named coins are already committed to a live in-flight spend, so
NOTHING was reserved by the failed call.
Deliberately distinct from any shortfall code. The user has the money; it is briefly committed elsewhere and comes back when that spend settles or its reservation lapses. Reporting a shortfall here sends someone to an exchange to solve a wait, which is the money-lie this taxonomy exists to prevent.
-32045 — the node’s coin-reservation set could not be read or written, so what is
in flight is UNKNOWN.
Never collapsed into an empty answer. “Nothing is reserved” and “I cannot tell you what is reserved” demand opposite actions from a caller: the first permits a spend, the second must refuse one. A guard that fails open is not a guard.
Implementations§
Source§impl ControlErrorCode
impl ControlErrorCode
Sourcepub const ALL: &'static [ControlErrorCode]
pub const ALL: &'static [ControlErrorCode]
Every catalogued code, for the error-catalogue document + drift tests.
Sourcepub const fn name(self) -> &'static str
pub const fn name(self) -> &'static str
The stable UPPER_SNAKE symbolic name a client branches on. Never derived from the message.
Sourcepub const fn origin(self) -> &'static str
pub const fn origin(self) -> &'static str
Where the error originates, mirroring dig-node’s classification.
Sourcepub const fn description(self) -> &'static str
pub const fn description(self) -> &'static str
A one-line description for the error catalogue.
Sourcepub fn from_code(code: i64) -> Option<ControlErrorCode>
pub fn from_code(code: i64) -> Option<ControlErrorCode>
Resolve a numeric wire code back to its variant, or None for an uncatalogued code.
Trait Implementations§
Source§impl Clone for ControlErrorCode
impl Clone for ControlErrorCode
Source§fn clone(&self) -> ControlErrorCode
fn clone(&self) -> ControlErrorCode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more