use crate::{Flags, ReturnCode, RmError, XaTransactionId};
use async_trait::async_trait;
#[async_trait]
pub trait CResourceManager {
async fn start(&mut self, id: XaTransactionId, flag: Flags) -> Result<ReturnCode, RmError>;
async fn end(&mut self, id: XaTransactionId, flag: Flags) -> Result<ReturnCode, RmError>;
async fn prepare(&mut self, id: XaTransactionId) -> Result<ReturnCode, RmError>;
async fn commit(&mut self, id: XaTransactionId, flag: Flags) -> Result<ReturnCode, RmError>;
async fn rollback(&mut self, id: XaTransactionId) -> Result<ReturnCode, RmError>;
async fn forget(&mut self, id: XaTransactionId) -> Result<ReturnCode, RmError>;
async fn recover(&mut self, flag: Flags) -> Result<Vec<XaTransactionId>, RmError>;
}