Skip to main content

ControlErrorCode

Enum ControlErrorCode 

Source
#[non_exhaustive]
pub enum ControlErrorCode {
Show 16 variants ParseError, InvalidRequest, MethodNotFound, InvalidParams, DispatchFailed, Unauthorized, NotSupported, ControlError, WalletNoChainSource, WalletNotSynced, WalletReadFailed, WalletRateLimited, WalletNodeSpendDisabled, WalletCoinsReserved, WalletReservationsUnavailable, SpendAuditUnreadable,
}
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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

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.

§

Unauthorized

-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.

§

WalletNodeSpendDisabled

-32044control.wallet.broadcast refused: the bundle requires a signature from one of the NODE’s OWN custodied keys while DIG_WALLET_ENABLE_LIVE_BROADCAST is off (dig-node SPEC §18.12).

The node relays bundles somebody else signed on every install; sending its own money is a separate, default-OFF custody decision, and a caller could otherwise sign through the node and hand the bundle straight back. Retrying cannot help: the remedy is a bundle that does not spend the node’s coins, or the flag.

The exact opposite disposition to WalletCoinsReserved, which is a wait. Keeping the two on distinct numbers is the whole point of this code being catalogued here.

§

WalletCoinsReserved

-32046 — 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.

§

WalletReservationsUnavailable

-32047 — 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.

§

SpendAuditUnreadable

-32048 — the automated-spend audit record could not be read at all, so what this node spent unattended is UNKNOWN.

Never collapsed into an empty page. “This node has moved no money unattended” and “I cannot tell you what this node moved” are opposite answers, and the first is the one a person stops investigating on. A partial read is a different thing again and is NOT an error: entries the node could parse are returned, and the ones it could not are counted in SpendsListResult::unreadable_lines. This code is for the case where nothing at all could be read.

An audit record that has never been written is likewise NOT an error — a node that has never spent automatically is the ordinary case, and it answers with an empty page.

Implementations§

Source§

impl ControlErrorCode

Source

pub const ALL: &'static [ControlErrorCode]

Every catalogued code, for the error-catalogue document + drift tests.

Source

pub const fn code(self) -> i64

The numeric JSON-RPC error code.

Source

pub const fn name(self) -> &'static str

The stable UPPER_SNAKE symbolic name a client branches on. Never derived from the message.

Source

pub const fn origin(self) -> &'static str

Where the error originates, mirroring dig-node’s classification.

Source

pub const fn description(self) -> &'static str

A one-line description for the error catalogue.

Source

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

Source§

fn clone(&self) -> ControlErrorCode

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ControlErrorCode

Source§

impl Debug for ControlErrorCode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ControlErrorCode

Source§

impl Hash for ControlErrorCode

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ControlErrorCode

Source§

fn eq(&self, other: &ControlErrorCode) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ControlErrorCode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.