PriceLevel

Struct PriceLevel 

Source
pub struct PriceLevel { /* private fields */ }
Expand description

A lock-free implementation of a price level in a limit order book

Implementations§

Source§

impl PriceLevel

Source

pub fn new(price: u64) -> Self

Create a new price level

Source

pub fn price(&self) -> u64

Get the price of this level

Source

pub fn visible_quantity(&self) -> u64

Get the visible quantity

Source

pub fn hidden_quantity(&self) -> u64

Get the hidden quantity

Source

pub fn total_quantity(&self) -> u64

Get the total quantity (visible + hidden)

Source

pub fn order_count(&self) -> usize

Get the number of orders

Source

pub fn stats(&self) -> Arc<PriceLevelStatistics>

Get the statistics for this price level

Source

pub fn add_order(&self, order: OrderType<()>) -> Arc<OrderType<()>>

Add an order to this price level

Source

pub fn iter_orders(&self) -> Vec<Arc<OrderType<()>>>

Creates an iterator over the orders in the price level.

Source

pub fn match_order( &self, incoming_quantity: u64, taker_order_id: OrderId, transaction_id_generator: &UuidGenerator, ) -> MatchResult

Matches an incoming order against existing orders at this price level.

This function attempts to match the incoming order quantity against the orders present in the OrderQueue. It iterates through the queue, matching orders until the incoming quantity is fully filled or the queue is exhausted. Transactions are generated for each successful match, and filled orders are removed from the queue. The function also updates the visible and hidden quantity counters and records statistics for each execution.

§Arguments
  • incoming_quantity: The quantity of the incoming order to be matched.
  • taker_order_id: The ID of the incoming order (the “taker” order).
  • transaction_id_generator: An atomic counter used to generate unique transaction IDs.
§Returns

A MatchResult object containing the results of the matching operation, including a list of generated transactions, the remaining unmatched quantity, a flag indicating whether the incoming order was completely filled, and a list of IDs of orders that were completely filled during the matching process.

Source

pub fn snapshot(&self) -> PriceLevelSnapshot

Create a snapshot of the current price level state

Source§

impl PriceLevel

Source

pub fn update_order( &self, update: OrderUpdate, ) -> Result<Option<Arc<OrderType<()>>>, PriceLevelError>

Apply an update to an existing order at this price level

Trait Implementations§

Source§

impl Debug for PriceLevel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PriceLevel

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for PriceLevel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&PriceLevel> for PriceLevelData

Source§

fn from(price_level: &PriceLevel) -> Self

Converts to this type from the input type.
Source§

impl FromStr for PriceLevel

Source§

type Err = PriceLevelError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Ord for PriceLevel

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for PriceLevel

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for PriceLevel

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Serialize for PriceLevel

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<PriceLevelData> for PriceLevel

Source§

type Error = PriceLevelError

The type returned in the event of a conversion error.
Source§

fn try_from(data: PriceLevelData) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Eq for PriceLevel

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,