nautilus_model/orderbook/
aggregation.rs

1// -------------------------------------------------------------------------------------------------
2//  Copyright (C) 2015-2025 Nautech Systems Pty Ltd. All rights reserved.
3//  https://nautechsystems.io
4//
5//  Licensed under the GNU Lesser General Public License Version 3.0 (the "License");
6//  You may not use this file except in compliance with the License.
7//  You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html
8//
9//  Unless required by applicable law or agreed to in writing, software
10//  distributed under the License is distributed on an "AS IS" BASIS,
11//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//  See the License for the specific language governing permissions and
13//  limitations under the License.
14// -------------------------------------------------------------------------------------------------
15
16//! Functions related to normalizing and processing top-of-book events.
17
18use crate::{
19    data::order::BookOrder,
20    enums::{BookType, RecordFlag},
21};
22
23pub(crate) fn pre_process_order(book_type: BookType, mut order: BookOrder, flags: u8) -> BookOrder {
24    match book_type {
25        BookType::L1_MBP => order.order_id = order.side as u64,
26        BookType::L2_MBP => order.order_id = order.price.raw as u64,
27        BookType::L3_MBO => {
28            if flags == 0 {
29            } else if RecordFlag::F_TOB.matches(flags) {
30                order.order_id = order.side as u64;
31            } else if RecordFlag::F_MBP.matches(flags) {
32                order.order_id = order.price.raw as u64;
33            }
34        }
35    };
36    order
37}