v0.3.10-pre.002
This commit is contained in:
49
crates/ksp-raw-transaction-lib/src/acquisition.rs
Normal file
49
crates/ksp-raw-transaction-lib/src/acquisition.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
// file: crates/ksp-raw-transaction-lib/src/acquisition.rs
|
||||
// version: 1
|
||||
|
||||
/// Complete source-neutral RAW transaction acquisition containing one canonical entity and one producer-owned observation.
|
||||
pub struct RawTransactionAcquisition {
|
||||
observation: ksp_store_api::RawTransactionObservation,
|
||||
transaction: ksp_store_api::RawTransaction,
|
||||
}
|
||||
|
||||
impl crate::RawTransactionAcquisition {
|
||||
/// Returns the producer-owned acquisition observation linked to the canonical transaction.
|
||||
#[must_use]
|
||||
pub const fn observation(&self) -> &ksp_store_api::RawTransactionObservation {
|
||||
return &self.observation;
|
||||
}
|
||||
|
||||
/// Returns the canonical source-independent RAW transaction.
|
||||
#[must_use]
|
||||
pub const fn transaction(&self) -> &ksp_store_api::RawTransaction {
|
||||
return &self.transaction;
|
||||
}
|
||||
|
||||
/// Consumes this acquisition into its canonical transaction and observation.
|
||||
#[must_use]
|
||||
pub fn into_parts(self) -> (ksp_store_api::RawTransaction, ksp_store_api::RawTransactionObservation) {
|
||||
return (self.transaction, self.observation);
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for crate::RawTransactionAcquisition {
|
||||
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
return formatter.write_str("RawTransactionAcquisition(..)");
|
||||
}
|
||||
}
|
||||
|
||||
/// Assembles one canonical transaction with a producer-owned observation key and safe acquisition provenance.
|
||||
#[must_use]
|
||||
pub fn assemble_raw_transaction_acquisition(
|
||||
transaction: ksp_store_api::RawTransaction,
|
||||
observation_key: ksp_store_api::RawObservationKey,
|
||||
provenance: ksp_store_api::RawAcquisitionProvenance,
|
||||
) -> crate::RawTransactionAcquisition {
|
||||
let observation = ksp_store_api::RawTransactionObservation::new(observation_key, transaction.reference().clone(), provenance);
|
||||
return crate::RawTransactionAcquisition { observation, transaction };
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "../unit_tests/acquisition.rs"]
|
||||
mod tests;
|
||||
Reference in New Issue
Block a user