1#![allow(non_camel_case_types)]
7#![allow(non_snake_case)]
8#![allow(non_upper_case_globals)]
9#![allow(unused_imports)]
10#![allow(dead_code)]
11#![allow(unused_variables)]
12#![allow(clippy::unnecessary_cast)]
13
14use crate::*;
15use core::option::Option;
16use core::ops::{Deref, DerefMut};
17
18#[cfg(feature = "std")]
19use std::io::{Read, Write};
20#[cfg(feature = "xdrs")]
21use xdrs::*;
22
23
24#[cfg(feature = "serde")]
25use ::serde::{{Serialize, Deserialize}};
26
27
28
29pub const kQueueEntryMaxLen : u32 = 256;
32
33#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
35#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
36#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
37#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
38#[repr(transparent)]
39#[cfg_attr(feature = "serde", serde(transparent))]
40pub struct QueueEntry {
41 inner: BytesM<kQueueEntryMaxLen>,
42}
43impl From<BytesM<kQueueEntryMaxLen>> for QueueEntry {
44 fn from(_inner: BytesM<kQueueEntryMaxLen>) -> Self {
45 Self { inner: _inner }
46 }
47}
48impl QueueEntry {
49 pub fn into_inner(self) -> BytesM<kQueueEntryMaxLen> {
50 self.inner
51 }
52 pub const fn new(_inner: BytesM<kQueueEntryMaxLen>) -> Self {
53 Self { inner: _inner }
54 }
55}
56
57impl Deref for QueueEntry {
58 type Target = BytesM<kQueueEntryMaxLen>;
59
60 fn deref(&self) -> &Self::Target {
61 &self.inner
62 }
63}
64impl DerefMut for QueueEntry {
65 fn deref_mut(&mut self) -> &mut Self::Target {
66 &mut self.inner
67 }
68}
69
70pub const kMaxConcurrentRcqReadsPerTx : u32 = 16384;
79
80pub const kRetrocausalQueueBlockEntriesMaxLen : u32 = 250;
86
87#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
91#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
92#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
93#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
94#[repr(C)]
95pub struct RetrocausalQueueBlock {
96 pub entries: VecM<QueueEntry>,
98 pub block_number: u64,
100}
101
102#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
107#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
108#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
109#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
110#[repr(C)]
111pub struct RetrocausalQueuePastBlockConsumeDelta {
112 pub max_fully_consumed_block_number: u64,
113 pub partial_consumed_number: u64,
114}
115
116#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
119#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
120#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
121#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
122#[repr(C)]
123pub struct RetrocausalQueueMetadata {
124 pub consume_state: RetrocausalQueuePastBlockConsumeDelta,
126 pub max_live_block_num: u64,
130 pub live_entries: u64,
132}
133
134#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
135#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
136#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
137#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
138#[repr(C)]
139pub struct RetrocausalQueueConsumeDelta {
140 pub past_block_consume: RetrocausalQueuePastBlockConsumeDelta,
141 pub current_block_consumed: VecM<QueueEntry, kRetrocausalQueueBlockEntriesMaxLen>,
142}
143
144#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
145#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
146#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
147#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
148#[repr(C)]
149pub struct RetrocausalQueueInsertDelta {
150 pub added_entries: VecM<QueueEntry, kRetrocausalQueueBlockEntriesMaxLen>,
151}
152
153#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
154#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
155#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
156#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
157#[repr(C)]
158pub struct RetrocausalQueueDelta {
159 pub consume: Option<RetrocausalQueueConsumeDelta>,
162 pub insert: RetrocausalQueueInsertDelta,
163 pub observed_concurrent_entries: VecM<QueueEntry, kMaxConcurrentRcqReadsPerTx>,
179}
180
181
182