nautilus_model/ffi/data/
deltas.rs1use nautilus_core::{ffi::cvec::CVec, UnixNanos};
17
18use crate::{
19 data::{OrderBookDelta, OrderBookDeltas, OrderBookDeltas_API},
20 enums::BookAction,
21 identifiers::InstrumentId,
22};
23
24#[no_mangle]
31pub extern "C" fn orderbook_deltas_new(
32 instrument_id: InstrumentId,
33 deltas: &CVec,
34) -> OrderBookDeltas_API {
35 let CVec { ptr, len, cap } = *deltas;
36 let deltas: Vec<OrderBookDelta> =
37 unsafe { Vec::from_raw_parts(ptr.cast::<OrderBookDelta>(), len, cap) };
38 let cloned_deltas = deltas.clone();
39 std::mem::forget(deltas); OrderBookDeltas_API::new(OrderBookDeltas::new(instrument_id, cloned_deltas))
41}
42
43#[no_mangle]
44pub extern "C" fn orderbook_deltas_drop(deltas: OrderBookDeltas_API) {
45 drop(deltas); }
47
48#[no_mangle]
49pub extern "C" fn orderbook_deltas_clone(deltas: &OrderBookDeltas_API) -> OrderBookDeltas_API {
50 deltas.clone()
51}
52
53#[no_mangle]
54pub extern "C" fn orderbook_deltas_instrument_id(deltas: &OrderBookDeltas_API) -> InstrumentId {
55 deltas.instrument_id
56}
57
58#[no_mangle]
59pub extern "C" fn orderbook_deltas_vec_deltas(deltas: &OrderBookDeltas_API) -> CVec {
60 deltas.deltas.clone().into()
61}
62
63#[no_mangle]
64pub extern "C" fn orderbook_deltas_is_snapshot(deltas: &OrderBookDeltas_API) -> u8 {
65 u8::from(deltas.deltas[0].action == BookAction::Clear)
66}
67
68#[no_mangle]
69pub extern "C" fn orderbook_deltas_flags(deltas: &OrderBookDeltas_API) -> u8 {
70 deltas.flags
71}
72
73#[no_mangle]
74pub extern "C" fn orderbook_deltas_sequence(deltas: &OrderBookDeltas_API) -> u64 {
75 deltas.sequence
76}
77
78#[no_mangle]
79pub extern "C" fn orderbook_deltas_ts_event(deltas: &OrderBookDeltas_API) -> UnixNanos {
80 deltas.ts_event
81}
82
83#[no_mangle]
84pub extern "C" fn orderbook_deltas_ts_init(deltas: &OrderBookDeltas_API) -> UnixNanos {
85 deltas.ts_init
86}
87
88#[allow(clippy::drop_non_drop)]
89#[no_mangle]
90pub extern "C" fn orderbook_deltas_vec_drop(v: CVec) {
91 let CVec { ptr, len, cap } = v;
92 let deltas: Vec<OrderBookDelta> =
93 unsafe { Vec::from_raw_parts(ptr.cast::<OrderBookDelta>(), len, cap) };
94 drop(deltas); }