#![allow(clippy::new_without_default)]
#![allow(clippy::needless_pass_by_value)]
#![allow(clippy::too_many_arguments)]
#![allow(unused_imports)]
use fixer::message::Message;
use fixer::fix_string::FIXString;
use fixer::errors::MessageRejectErrorEnum;
use fixer::session::session_id::SessionID;
use rust_decimal::Decimal;
use jiff::Timestamp;
use crate::field;
use crate::tag;
pub struct MarketDefinition {
pub message: Message,
}
impl MarketDefinition {
pub fn new(market_report_id: field::MarketReportIDField, market_id: field::MarketIDField) -> Self {
let mut msg = Message::new();
msg.header.set_field(tag::MSG_TYPE, FIXString::from("BU".to_string()));
msg.body.set_field(tag::MARKET_REPORT_ID, market_report_id.0);
msg.body.set_field(tag::MARKET_ID, market_id.0);
Self { message: msg }
}
pub fn from_message(msg: Message) -> Self {
Self { message: msg }
}
pub fn to_message(self) -> Message {
self.message
}
pub fn set_appl_id(&mut self, v: String) {
self.message.body.set_field(tag::APPL_ID, FIXString::from(v));
}
pub fn get_appl_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::ApplIDField::new(String::new());
self.message.body.get_field(tag::APPL_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_appl_id(&self) -> bool {
self.message.body.has(tag::APPL_ID)
}
pub fn set_appl_last_seq_num(&mut self, v: isize) {
self.message.body.set_field(tag::APPL_LAST_SEQ_NUM, fixer::fix_int::FIXInt::from(v));
}
pub fn get_appl_last_seq_num(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ApplLastSeqNumField::new(0);
self.message.body.get_field(tag::APPL_LAST_SEQ_NUM, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_appl_last_seq_num(&self) -> bool {
self.message.body.has(tag::APPL_LAST_SEQ_NUM)
}
pub fn set_appl_resend_flag(&mut self, v: bool) {
self.message.body.set_field(tag::APPL_RESEND_FLAG, fixer::fix_boolean::FIXBoolean::from(v));
}
pub fn get_appl_resend_flag(&self) -> Result<bool, MessageRejectErrorEnum> {
let mut fld = field::ApplResendFlagField::new(false);
self.message.body.get_field(tag::APPL_RESEND_FLAG, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_appl_resend_flag(&self) -> bool {
self.message.body.has(tag::APPL_RESEND_FLAG)
}
pub fn set_appl_seq_num(&mut self, v: isize) {
self.message.body.set_field(tag::APPL_SEQ_NUM, fixer::fix_int::FIXInt::from(v));
}
pub fn get_appl_seq_num(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ApplSeqNumField::new(0);
self.message.body.get_field(tag::APPL_SEQ_NUM, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_appl_seq_num(&self) -> bool {
self.message.body.has(tag::APPL_SEQ_NUM)
}
pub fn set_currency(&mut self, v: String) {
self.message.body.set_field(tag::CURRENCY, FIXString::from(v));
}
pub fn get_currency(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::CurrencyField::new(String::new());
self.message.body.get_field(tag::CURRENCY, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_currency(&self) -> bool {
self.message.body.has(tag::CURRENCY)
}
pub fn set_encoded_mkt_segm_desc(&mut self, v: String) {
self.message.body.set_field(tag::ENCODED_MKT_SEGM_DESC, FIXString::from(v));
}
pub fn get_encoded_mkt_segm_desc(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::EncodedMktSegmDescField::new(String::new());
self.message.body.get_field(tag::ENCODED_MKT_SEGM_DESC, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_encoded_mkt_segm_desc(&self) -> bool {
self.message.body.has(tag::ENCODED_MKT_SEGM_DESC)
}
pub fn set_encoded_mkt_segm_desc_len(&mut self, v: isize) {
self.message.body.set_field(tag::ENCODED_MKT_SEGM_DESC_LEN, fixer::fix_int::FIXInt::from(v));
}
pub fn get_encoded_mkt_segm_desc_len(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::EncodedMktSegmDescLenField::new(0);
self.message.body.get_field(tag::ENCODED_MKT_SEGM_DESC_LEN, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_encoded_mkt_segm_desc_len(&self) -> bool {
self.message.body.has(tag::ENCODED_MKT_SEGM_DESC_LEN)
}
pub fn set_encoded_text(&mut self, v: String) {
self.message.body.set_field(tag::ENCODED_TEXT, FIXString::from(v));
}
pub fn get_encoded_text(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::EncodedTextField::new(String::new());
self.message.body.get_field(tag::ENCODED_TEXT, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_encoded_text(&self) -> bool {
self.message.body.has(tag::ENCODED_TEXT)
}
pub fn set_encoded_text_len(&mut self, v: isize) {
self.message.body.set_field(tag::ENCODED_TEXT_LEN, fixer::fix_int::FIXInt::from(v));
}
pub fn get_encoded_text_len(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::EncodedTextLenField::new(0);
self.message.body.get_field(tag::ENCODED_TEXT_LEN, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_encoded_text_len(&self) -> bool {
self.message.body.has(tag::ENCODED_TEXT_LEN)
}
pub fn set_expiration_cycle(&mut self, v: isize) {
self.message.body.set_field(tag::EXPIRATION_CYCLE, fixer::fix_int::FIXInt::from(v));
}
pub fn get_expiration_cycle(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ExpirationCycleField::new(0);
self.message.body.get_field(tag::EXPIRATION_CYCLE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_expiration_cycle(&self) -> bool {
self.message.body.has(tag::EXPIRATION_CYCLE)
}
pub fn set_high_limit_price(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::HIGH_LIMIT_PRICE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_high_limit_price(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::HighLimitPriceField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::HIGH_LIMIT_PRICE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_high_limit_price(&self) -> bool {
self.message.body.has(tag::HIGH_LIMIT_PRICE)
}
pub fn set_implied_market_indicator(&mut self, v: isize) {
self.message.body.set_field(tag::IMPLIED_MARKET_INDICATOR, fixer::fix_int::FIXInt::from(v));
}
pub fn get_implied_market_indicator(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ImpliedMarketIndicatorField::new(0);
self.message.body.get_field(tag::IMPLIED_MARKET_INDICATOR, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_implied_market_indicator(&self) -> bool {
self.message.body.has(tag::IMPLIED_MARKET_INDICATOR)
}
pub fn set_low_limit_price(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::LOW_LIMIT_PRICE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_low_limit_price(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::LowLimitPriceField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::LOW_LIMIT_PRICE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_low_limit_price(&self) -> bool {
self.message.body.has(tag::LOW_LIMIT_PRICE)
}
pub fn set_market_id(&mut self, v: String) {
self.message.body.set_field(tag::MARKET_ID, FIXString::from(v));
}
pub fn get_market_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::MarketIDField::new(String::new());
self.message.body.get_field(tag::MARKET_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_market_id(&self) -> bool {
self.message.body.has(tag::MARKET_ID)
}
pub fn set_market_report_id(&mut self, v: String) {
self.message.body.set_field(tag::MARKET_REPORT_ID, FIXString::from(v));
}
pub fn get_market_report_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::MarketReportIDField::new(String::new());
self.message.body.get_field(tag::MARKET_REPORT_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_market_report_id(&self) -> bool {
self.message.body.has(tag::MARKET_REPORT_ID)
}
pub fn set_market_req_id(&mut self, v: String) {
self.message.body.set_field(tag::MARKET_REQ_ID, FIXString::from(v));
}
pub fn get_market_req_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::MarketReqIDField::new(String::new());
self.message.body.get_field(tag::MARKET_REQ_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_market_req_id(&self) -> bool {
self.message.body.has(tag::MARKET_REQ_ID)
}
pub fn set_market_segment_desc(&mut self, v: String) {
self.message.body.set_field(tag::MARKET_SEGMENT_DESC, FIXString::from(v));
}
pub fn get_market_segment_desc(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::MarketSegmentDescField::new(String::new());
self.message.body.get_field(tag::MARKET_SEGMENT_DESC, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_market_segment_desc(&self) -> bool {
self.message.body.has(tag::MARKET_SEGMENT_DESC)
}
pub fn set_market_segment_id(&mut self, v: String) {
self.message.body.set_field(tag::MARKET_SEGMENT_ID, FIXString::from(v));
}
pub fn get_market_segment_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::MarketSegmentIDField::new(String::new());
self.message.body.get_field(tag::MARKET_SEGMENT_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_market_segment_id(&self) -> bool {
self.message.body.has(tag::MARKET_SEGMENT_ID)
}
pub fn set_max_price_variation(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::MAX_PRICE_VARIATION, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_max_price_variation(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::MaxPriceVariationField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::MAX_PRICE_VARIATION, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_max_price_variation(&self) -> bool {
self.message.body.has(tag::MAX_PRICE_VARIATION)
}
pub fn set_max_trade_vol(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::MAX_TRADE_VOL, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_max_trade_vol(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::MaxTradeVolField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::MAX_TRADE_VOL, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_max_trade_vol(&self) -> bool {
self.message.body.has(tag::MAX_TRADE_VOL)
}
pub fn set_min_trade_vol(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::MIN_TRADE_VOL, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_min_trade_vol(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::MinTradeVolField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::MIN_TRADE_VOL, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_min_trade_vol(&self) -> bool {
self.message.body.has(tag::MIN_TRADE_VOL)
}
pub fn set_multileg_model(&mut self, v: isize) {
self.message.body.set_field(tag::MULTILEG_MODEL, fixer::fix_int::FIXInt::from(v));
}
pub fn get_multileg_model(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::MultilegModelField::new(0);
self.message.body.get_field(tag::MULTILEG_MODEL, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_multileg_model(&self) -> bool {
self.message.body.has(tag::MULTILEG_MODEL)
}
pub fn set_multileg_price_method(&mut self, v: isize) {
self.message.body.set_field(tag::MULTILEG_PRICE_METHOD, fixer::fix_int::FIXInt::from(v));
}
pub fn get_multileg_price_method(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::MultilegPriceMethodField::new(0);
self.message.body.get_field(tag::MULTILEG_PRICE_METHOD, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_multileg_price_method(&self) -> bool {
self.message.body.has(tag::MULTILEG_PRICE_METHOD)
}
pub fn set_no_exec_inst_rules(&mut self, v: isize) {
self.message.body.set_field(tag::NO_EXEC_INST_RULES, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_exec_inst_rules(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoExecInstRulesField::new(0);
self.message.body.get_field(tag::NO_EXEC_INST_RULES, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_exec_inst_rules(&self) -> bool {
self.message.body.has(tag::NO_EXEC_INST_RULES)
}
pub fn set_no_lot_type_rules(&mut self, v: isize) {
self.message.body.set_field(tag::NO_LOT_TYPE_RULES, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_lot_type_rules(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoLotTypeRulesField::new(0);
self.message.body.get_field(tag::NO_LOT_TYPE_RULES, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_lot_type_rules(&self) -> bool {
self.message.body.has(tag::NO_LOT_TYPE_RULES)
}
pub fn set_no_ord_type_rules(&mut self, v: isize) {
self.message.body.set_field(tag::NO_ORD_TYPE_RULES, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_ord_type_rules(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoOrdTypeRulesField::new(0);
self.message.body.get_field(tag::NO_ORD_TYPE_RULES, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_ord_type_rules(&self) -> bool {
self.message.body.has(tag::NO_ORD_TYPE_RULES)
}
pub fn set_no_tick_rules(&mut self, v: isize) {
self.message.body.set_field(tag::NO_TICK_RULES, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_tick_rules(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoTickRulesField::new(0);
self.message.body.get_field(tag::NO_TICK_RULES, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_tick_rules(&self) -> bool {
self.message.body.has(tag::NO_TICK_RULES)
}
pub fn set_no_time_in_force_rules(&mut self, v: isize) {
self.message.body.set_field(tag::NO_TIME_IN_FORCE_RULES, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_time_in_force_rules(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoTimeInForceRulesField::new(0);
self.message.body.get_field(tag::NO_TIME_IN_FORCE_RULES, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_time_in_force_rules(&self) -> bool {
self.message.body.has(tag::NO_TIME_IN_FORCE_RULES)
}
pub fn set_parent_mkt_segm_id(&mut self, v: String) {
self.message.body.set_field(tag::PARENT_MKT_SEGM_ID, FIXString::from(v));
}
pub fn get_parent_mkt_segm_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::ParentMktSegmIDField::new(String::new());
self.message.body.get_field(tag::PARENT_MKT_SEGM_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_parent_mkt_segm_id(&self) -> bool {
self.message.body.has(tag::PARENT_MKT_SEGM_ID)
}
pub fn set_price_limit_type(&mut self, v: isize) {
self.message.body.set_field(tag::PRICE_LIMIT_TYPE, fixer::fix_int::FIXInt::from(v));
}
pub fn get_price_limit_type(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::PriceLimitTypeField::new(0);
self.message.body.get_field(tag::PRICE_LIMIT_TYPE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_price_limit_type(&self) -> bool {
self.message.body.has(tag::PRICE_LIMIT_TYPE)
}
pub fn set_price_type(&mut self, v: isize) {
self.message.body.set_field(tag::PRICE_TYPE, fixer::fix_int::FIXInt::from(v));
}
pub fn get_price_type(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::PriceTypeField::new(0);
self.message.body.get_field(tag::PRICE_TYPE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_price_type(&self) -> bool {
self.message.body.has(tag::PRICE_TYPE)
}
pub fn set_round_lot(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::ROUND_LOT, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_round_lot(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::RoundLotField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::ROUND_LOT, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_round_lot(&self) -> bool {
self.message.body.has(tag::ROUND_LOT)
}
pub fn set_text(&mut self, v: String) {
self.message.body.set_field(tag::TEXT, FIXString::from(v));
}
pub fn get_text(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::TextField::new(String::new());
self.message.body.get_field(tag::TEXT, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_text(&self) -> bool {
self.message.body.has(tag::TEXT)
}
pub fn set_trading_currency(&mut self, v: String) {
self.message.body.set_field(tag::TRADING_CURRENCY, FIXString::from(v));
}
pub fn get_trading_currency(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::TradingCurrencyField::new(String::new());
self.message.body.get_field(tag::TRADING_CURRENCY, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_trading_currency(&self) -> bool {
self.message.body.has(tag::TRADING_CURRENCY)
}
pub fn set_trading_reference_price(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::TRADING_REFERENCE_PRICE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_trading_reference_price(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::TradingReferencePriceField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::TRADING_REFERENCE_PRICE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_trading_reference_price(&self) -> bool {
self.message.body.has(tag::TRADING_REFERENCE_PRICE)
}
pub fn set_transact_time(&mut self, v: Timestamp) {
self.message.body.set_field(tag::TRANSACT_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
time: v,
precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
});
}
pub fn get_transact_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
let mut fld = field::TransactTimeField::new(Timestamp::UNIX_EPOCH);
self.message.body.get_field(tag::TRANSACT_TIME, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_transact_time(&self) -> bool {
self.message.body.has(tag::TRANSACT_TIME)
}
}
pub type RouteOut = fn(msg: MarketDefinition, session_id: SessionID) -> Result<(), MessageRejectErrorEnum>;
pub type Route = (&'static str, &'static str, Box<dyn Fn(&Message, SessionID) -> Result<(), MessageRejectErrorEnum> + Send>);
pub fn route(router: RouteOut) -> Route {
let r = move |msg: &Message, session_id: SessionID| -> Result<(), MessageRejectErrorEnum> {
router(MarketDefinition::from_message(msg.clone()), session_id)
};
("9", "BU", Box::new(r))
}