Module transaction

Module transaction 

Source
Expand description

Transactional chunk operations for atomic storage writes.

This module provides ACID-compliant transaction support for chunk storage, ensuring that multi-chunk writes are atomic (all-or-nothing). If any chunk fails to write, all previously written chunks in the transaction are rolled back.

§Example

use chie_core::transaction::{Transaction, TransactionManager};
use chie_core::ChunkStorage;
use chie_crypto::{generate_key, generate_nonce};
use std::path::PathBuf;

let mut storage = ChunkStorage::new(PathBuf::from("/tmp/storage"), 1_000_000_000).await?;
let mut tx_mgr = TransactionManager::new();

// Begin a transaction
let tx_id = tx_mgr.begin_transaction();

let key = generate_key();
let nonce = generate_nonce();
let chunks = vec![vec![1, 2, 3], vec![4, 5, 6]];

// Perform transactional write
match tx_mgr.transactional_write(&mut storage, tx_id, "QmTest", &chunks, &key, &nonce).await {
    Ok(()) => {
        // Commit transaction
        tx_mgr.commit(tx_id)?;
    }
    Err(e) => {
        // Rollback on error
        tx_mgr.rollback(&mut storage, tx_id).await?;
        return Err(e.into());
    }
}

Structs§

Transaction
A transaction for atomic chunk operations.
TransactionManager
Manages transactions for atomic chunk operations.

Enums§

TransactionError
Transaction error types.
TransactionState
Transaction state.