#[repr(C)]pub struct BookSide {
pub roots: [OrderTreeRoot; 2],
pub reserved_roots: [OrderTreeRoot; 4],
pub reserved: [u8; 256],
pub nodes: OrderTreeNodes,
}
Fields§
§roots: [OrderTreeRoot; 2]
§reserved_roots: [OrderTreeRoot; 4]
§reserved: [u8; 256]
§nodes: OrderTreeNodes
Implementations§
source§impl BookSide
impl BookSide
sourcepub fn iter_valid(
&self,
now_ts: u64,
oracle_price_lots: i64
) -> impl Iterator<Item = BookSideIterItem<'_>>
pub fn iter_valid( &self, now_ts: u64, oracle_price_lots: i64 ) -> impl Iterator<Item = BookSideIterItem<'_>>
Iterate over all entries in the book filtering out invalid orders
smallest to highest for asks highest to smallest for bids
sourcepub fn iter_all_including_invalid(
&self,
now_ts: u64,
oracle_price_lots: i64
) -> BookSideIter<'_> ⓘ
pub fn iter_all_including_invalid( &self, now_ts: u64, oracle_price_lots: i64 ) -> BookSideIter<'_> ⓘ
Iterate over all entries, including invalid orders
pub fn node(&self, handle: NodeHandle) -> Option<&AnyNode>
pub fn node_mut(&mut self, handle: NodeHandle) -> Option<&mut AnyNode>
pub fn root(&self, component: BookSideOrderTree) -> &OrderTreeRoot
pub fn root_mut(&mut self, component: BookSideOrderTree) -> &mut OrderTreeRoot
pub fn is_full(&self) -> bool
pub fn insert_leaf( &mut self, component: BookSideOrderTree, new_leaf: &LeafNode ) -> Result<(NodeHandle, Option<LeafNode>)>
sourcepub fn remove_worst(
&mut self,
now_ts: u64,
oracle_price_lots: i64
) -> Option<(LeafNode, i64)>
pub fn remove_worst( &mut self, now_ts: u64, oracle_price_lots: i64 ) -> Option<(LeafNode, i64)>
Remove the overall worst-price order.
sourcepub fn remove_one_expired(
&mut self,
component: BookSideOrderTree,
now_ts: u64
) -> Option<LeafNode>
pub fn remove_one_expired( &mut self, component: BookSideOrderTree, now_ts: u64 ) -> Option<LeafNode>
Remove the order with the lowest expiry timestamp in the component, if that’s < now_ts. If there is none, try to remove the lowest expiry one from the other component.
pub fn remove_by_key( &mut self, component: BookSideOrderTree, search_key: u128 ) -> Option<LeafNode>
pub fn side(&self) -> Side
sourcepub fn quantity_at_price(
&self,
limit_price_lots: i64,
now_ts: u64,
oracle_price_lots: i64
) -> i64
pub fn quantity_at_price( &self, limit_price_lots: i64, now_ts: u64, oracle_price_lots: i64 ) -> i64
Return the quantity of orders that can be matched by an order at limit_price_lots
Trait Implementations§
source§impl AccountDeserialize for BookSide
impl AccountDeserialize for BookSide
source§fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
Deserializes previously initialized account data. Should fail for all
uninitialized accounts, where the bytes are zeroed. Implementations
should be unique to a particular account type so that one can never
successfully deserialize the data of one account type into another.
For example, if the SPL token program were to implement this trait,
it should be impossible to deserialize a
Mint
account into a token
Account
.source§fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
Deserializes account data without checking the account discriminator.
This should only be used on account initialization, when the bytes of
the account are zeroed.
impl Copy for BookSide
impl Pod for BookSide
impl ZeroCopy for BookSide
Auto Trait Implementations§
impl RefUnwindSafe for BookSide
impl Send for BookSide
impl Sync for BookSide
impl Unpin for BookSide
impl UnwindSafe for BookSide
Blanket Implementations§
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
Casts the value.
§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere T: AnyBitPattern,
§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret
bits
as &Self
.source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
Casts the value.
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
Casts the value.
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere T: UnwrappedCast<Dst>,
Casts the value.
source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere Src: UnwrappedCast<Dst>,
source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere T: WrappingCast<Dst>,
Casts the value.
source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere Src: WrappingCast<Dst>,
source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.