diff --git a/core/src/banking_stage/transaction_scheduler/batch_id_generator.rs b/core/src/banking_stage/transaction_scheduler/batch_id_generator.rs new file mode 100644 index 000000000..6effc80f8 --- /dev/null +++ b/core/src/banking_stage/transaction_scheduler/batch_id_generator.rs @@ -0,0 +1,14 @@ +use crate::banking_stage::scheduler_messages::TransactionBatchId; + +#[derive(Default)] +pub struct BatchIdGenerator { + next_id: u64, +} + +impl BatchIdGenerator { + pub fn next(&mut self) -> TransactionBatchId { + let id = self.next_id; + self.next_id = self.next_id.wrapping_sub(1); + TransactionBatchId::new(id) + } +} diff --git a/core/src/banking_stage/transaction_scheduler/mod.rs b/core/src/banking_stage/transaction_scheduler/mod.rs index c723f3af9..065efba0d 100644 --- a/core/src/banking_stage/transaction_scheduler/mod.rs +++ b/core/src/banking_stage/transaction_scheduler/mod.rs @@ -6,3 +6,9 @@ mod transaction_priority_id; mod transaction_state; #[allow(dead_code)] mod transaction_state_container; + +#[allow(dead_code)] +mod transaction_id_generator; + +#[allow(dead_code)] +mod batch_id_generator; diff --git a/core/src/banking_stage/transaction_scheduler/transaction_id_generator.rs b/core/src/banking_stage/transaction_scheduler/transaction_id_generator.rs new file mode 100644 index 000000000..0f88fd769 --- /dev/null +++ b/core/src/banking_stage/transaction_scheduler/transaction_id_generator.rs @@ -0,0 +1,16 @@ +use crate::banking_stage::scheduler_messages::TransactionId; + +/// Simple sequential ID generator for `TransactionId`s. +/// These IDs uniquely identify transactions during the scheduling process. +#[derive(Default)] +pub struct TransactionIdGenerator { + next_id: u64, +} + +impl TransactionIdGenerator { + pub fn next(&mut self) -> TransactionId { + let id = self.next_id; + self.next_id = self.next_id.wrapping_add(1); + TransactionId::new(id) + } +}