use crate::xid::XidError;
#[derive(Debug, thiserror::Error)]
pub enum XaError {
#[error("XAER_NOTA: unknown XID")]
NotFound,
#[error("XAER_INVAL: invalid arguments")]
Invalid,
#[error("XAER_PROTO: protocol error — {0}")]
Protocol(String),
#[error("XAER_RMFAIL: resource manager failure — {0}")]
RmFail(String),
#[error("XAER_DUPID: duplicate XID")]
DuplicateXid,
#[error("XAER_OUTSIDE: work outside global transaction")]
Outside,
#[error("XA_HEURCOM: heuristic commit")]
HeuristicCommit,
#[error("XA_HEURRB: heuristic rollback")]
HeuristicRollback,
#[deprecated(
since = "2.0.0",
note = "crash-durable XA is now supported (wave 3-2); this variant is no longer returned"
)]
#[error(
"XA crash durability is not supported: this variant is retained \
for SemVer compatibility and will be removed in v3.0."
)]
CrashDurabilityNotSupported,
#[error(transparent)]
Xid(#[from] XidError),
#[error("database error: {0}")]
Db(#[from] noxu_db::NoxuError),
}
pub type XaResult<T> = Result<T, XaError>;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PrepareResult {
Ok,
ReadOnly,
}