#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
#![deny(clippy::missing_errors_doc)]
pub mod compat;
pub mod decode;
pub mod encode;
pub mod enums;
pub mod error;
pub mod flags;
mod json_writer;
pub mod macros;
pub mod metadata;
pub mod pretty;
pub mod publishers;
#[cfg(feature = "python")]
pub mod python;
pub mod record;
pub mod record_buf;
mod record_enum;
pub mod record_ref;
pub mod symbol_map;
#[cfg(test)]
mod test_utils;
pub mod v1;
pub mod v2;
pub mod v3;
#[doc(inline)]
pub use crate::{
enums::{
rtype, Action, Compression, Encoding, ErrorCode, InstrumentClass, MatchAlgorithm, RType,
SType, Schema, SecurityUpdateAction, Side, StatType, StatUpdateAction, StatusAction,
StatusReason, SystemCode, TradingEvent, TriState, UserDefinedInstrument,
VersionUpgradePolicy,
},
error::{Error, Result},
flags::FlagSet,
metadata::{MappingInterval, Metadata, MetadataBuilder, SymbolMapping},
publishers::{Dataset, Publisher, Venue},
record::{
Bbo1MMsg, Bbo1SMsg, BboMsg, BidAskPair, Cbbo1MMsg, Cbbo1SMsg, CbboMsg, Cmbp1Msg,
ConsolidatedBidAskPair, ErrorMsg, HasRType, ImbalanceMsg, InstrumentDefMsg, MboMsg,
Mbp10Msg, Mbp1Msg, OhlcvMsg, Record, RecordHeader, RecordMut, StatMsg, StatusMsg,
SymbolMappingMsg, SystemMsg, TbboMsg, TcbboMsg, TradeMsg, WithTsOut,
},
record_buf::RecordBuf,
record_enum::{RecordEnum, RecordRefEnum},
record_ref::{RecordRef, RecordRefMut},
symbol_map::{PitSymbolMap, SymbolIndex, TsSymbolMap},
};
pub const DBN_VERSION: u8 = 3;
pub const SYMBOL_CSTR_LEN: usize = v3::SYMBOL_CSTR_LEN;
pub const ASSET_CSTR_LEN: usize = v3::ASSET_CSTR_LEN;
const METADATA_DATASET_CSTR_LEN: usize = 16;
const METADATA_RESERVED_LEN: usize = 53;
const METADATA_FIXED_LEN: usize = 100;
const NULL_LIMIT: u64 = 0;
const NULL_RECORD_COUNT: u64 = u64::MAX;
const NULL_SCHEMA: u16 = u16::MAX;
const NULL_STYPE: u8 = u8::MAX;
pub const FIXED_PRICE_SCALE: i64 = 1_000_000_000;
pub const UNDEF_PRICE: i64 = i64::MAX;
pub const UNDEF_ORDER_SIZE: u32 = u32::MAX;
pub const UNDEF_STAT_QUANTITY: i64 = v3::UNDEF_STAT_QUANTITY;
pub const UNDEF_TIMESTAMP: u64 = u64::MAX;
pub const MAX_RECORD_LEN: usize = std::mem::size_of::<WithTsOut<v3::InstrumentDefMsg>>();
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
#[repr(transparent)]
pub struct DbnVersion(u8);
impl TryFrom<u8> for DbnVersion {
type Error = crate::Error;
fn try_from(version: u8) -> crate::Result<Self> {
if (1..=DBN_VERSION).contains(&version) {
Ok(Self(version))
} else {
Err(Error::BadArgument {
param_name: "version".to_owned(),
desc: format!("invalid, must be between 1 and {DBN_VERSION}, inclusive"),
})
}
}
}
impl DbnVersion {
pub fn get(self) -> u8 {
self.0
}
}
impl PartialEq<u8> for DbnVersion {
fn eq(&self, other: &u8) -> bool {
self.0 == *other
}
}
impl PartialOrd<u8> for DbnVersion {
fn partial_cmp(&self, other: &u8) -> Option<std::cmp::Ordering> {
self.0.partial_cmp(other)
}
}