#![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 BidRequest {
pub message: Message,
}
impl BidRequest {
pub fn new(client_bid_id: field::ClientBidIDField, bid_request_trans_type: field::BidRequestTransTypeField, tot_no_related_sym: field::TotNoRelatedSymField, bid_type: field::BidTypeField, bid_trade_type: field::BidTradeTypeField, basis_px_type: field::BasisPxTypeField) -> Self {
let mut msg = Message::new();
msg.header.set_field(tag::MSG_TYPE, FIXString::from("k".to_string()));
msg.body.set_field(tag::CLIENT_BID_ID, client_bid_id.0);
msg.body.set_field(tag::BID_REQUEST_TRANS_TYPE, bid_request_trans_type.0);
msg.body.set_field(tag::TOT_NO_RELATED_SYM, tot_no_related_sym.0);
msg.body.set_field(tag::BID_TYPE, bid_type.0);
msg.body.set_field(tag::BID_TRADE_TYPE, bid_trade_type.0);
msg.body.set_field(tag::BASIS_PX_TYPE, basis_px_type.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_basis_px_type(&mut self, v: String) {
self.message.body.set_field(tag::BASIS_PX_TYPE, FIXString::from(v));
}
pub fn get_basis_px_type(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::BasisPxTypeField::new(String::new());
self.message.body.get_field(tag::BASIS_PX_TYPE, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_basis_px_type(&self) -> bool {
self.message.body.has(tag::BASIS_PX_TYPE)
}
pub fn set_bid_id(&mut self, v: String) {
self.message.body.set_field(tag::BID_ID, FIXString::from(v));
}
pub fn get_bid_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::BidIDField::new(String::new());
self.message.body.get_field(tag::BID_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_bid_id(&self) -> bool {
self.message.body.has(tag::BID_ID)
}
pub fn set_bid_request_trans_type(&mut self, v: String) {
self.message.body.set_field(tag::BID_REQUEST_TRANS_TYPE, FIXString::from(v));
}
pub fn get_bid_request_trans_type(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::BidRequestTransTypeField::new(String::new());
self.message.body.get_field(tag::BID_REQUEST_TRANS_TYPE, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_bid_request_trans_type(&self) -> bool {
self.message.body.has(tag::BID_REQUEST_TRANS_TYPE)
}
pub fn set_bid_trade_type(&mut self, v: String) {
self.message.body.set_field(tag::BID_TRADE_TYPE, FIXString::from(v));
}
pub fn get_bid_trade_type(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::BidTradeTypeField::new(String::new());
self.message.body.get_field(tag::BID_TRADE_TYPE, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_bid_trade_type(&self) -> bool {
self.message.body.has(tag::BID_TRADE_TYPE)
}
pub fn set_bid_type(&mut self, v: isize) {
self.message.body.set_field(tag::BID_TYPE, fixer::fix_int::FIXInt::from(v));
}
pub fn get_bid_type(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::BidTypeField::new(0);
self.message.body.get_field(tag::BID_TYPE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_bid_type(&self) -> bool {
self.message.body.has(tag::BID_TYPE)
}
pub fn set_client_bid_id(&mut self, v: String) {
self.message.body.set_field(tag::CLIENT_BID_ID, FIXString::from(v));
}
pub fn get_client_bid_id(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::ClientBidIDField::new(String::new());
self.message.body.get_field(tag::CLIENT_BID_ID, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_client_bid_id(&self) -> bool {
self.message.body.has(tag::CLIENT_BID_ID)
}
pub fn set_cross_percent(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::CROSS_PERCENT, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_cross_percent(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::CrossPercentField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::CROSS_PERCENT, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_cross_percent(&self) -> bool {
self.message.body.has(tag::CROSS_PERCENT)
}
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_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_exchange_for_physical(&mut self, v: bool) {
self.message.body.set_field(tag::EXCHANGE_FOR_PHYSICAL, fixer::fix_boolean::FIXBoolean::from(v));
}
pub fn get_exchange_for_physical(&self) -> Result<bool, MessageRejectErrorEnum> {
let mut fld = field::ExchangeForPhysicalField::new(false);
self.message.body.get_field(tag::EXCHANGE_FOR_PHYSICAL, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_exchange_for_physical(&self) -> bool {
self.message.body.has(tag::EXCHANGE_FOR_PHYSICAL)
}
pub fn set_forex_req(&mut self, v: bool) {
self.message.body.set_field(tag::FOREX_REQ, fixer::fix_boolean::FIXBoolean::from(v));
}
pub fn get_forex_req(&self) -> Result<bool, MessageRejectErrorEnum> {
let mut fld = field::ForexReqField::new(false);
self.message.body.get_field(tag::FOREX_REQ, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_forex_req(&self) -> bool {
self.message.body.has(tag::FOREX_REQ)
}
pub fn set_inc_tax_ind(&mut self, v: isize) {
self.message.body.set_field(tag::INC_TAX_IND, fixer::fix_int::FIXInt::from(v));
}
pub fn get_inc_tax_ind(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::IncTaxIndField::new(0);
self.message.body.get_field(tag::INC_TAX_IND, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_inc_tax_ind(&self) -> bool {
self.message.body.has(tag::INC_TAX_IND)
}
pub fn set_liquidity_ind_type(&mut self, v: isize) {
self.message.body.set_field(tag::LIQUIDITY_IND_TYPE, fixer::fix_int::FIXInt::from(v));
}
pub fn get_liquidity_ind_type(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::LiquidityIndTypeField::new(0);
self.message.body.get_field(tag::LIQUIDITY_IND_TYPE, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_liquidity_ind_type(&self) -> bool {
self.message.body.has(tag::LIQUIDITY_IND_TYPE)
}
pub fn set_list_name(&mut self, v: String) {
self.message.body.set_field(tag::LIST_NAME, FIXString::from(v));
}
pub fn get_list_name(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::ListNameField::new(String::new());
self.message.body.get_field(tag::LIST_NAME, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_list_name(&self) -> bool {
self.message.body.has(tag::LIST_NAME)
}
pub fn set_no_bid_components(&mut self, v: isize) {
self.message.body.set_field(tag::NO_BID_COMPONENTS, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_bid_components(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoBidComponentsField::new(0);
self.message.body.get_field(tag::NO_BID_COMPONENTS, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_bid_components(&self) -> bool {
self.message.body.has(tag::NO_BID_COMPONENTS)
}
pub fn set_no_bid_descriptors(&mut self, v: isize) {
self.message.body.set_field(tag::NO_BID_DESCRIPTORS, fixer::fix_int::FIXInt::from(v));
}
pub fn get_no_bid_descriptors(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NoBidDescriptorsField::new(0);
self.message.body.get_field(tag::NO_BID_DESCRIPTORS, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_no_bid_descriptors(&self) -> bool {
self.message.body.has(tag::NO_BID_DESCRIPTORS)
}
pub fn set_num_bidders(&mut self, v: isize) {
self.message.body.set_field(tag::NUM_BIDDERS, fixer::fix_int::FIXInt::from(v));
}
pub fn get_num_bidders(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NumBiddersField::new(0);
self.message.body.get_field(tag::NUM_BIDDERS, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_num_bidders(&self) -> bool {
self.message.body.has(tag::NUM_BIDDERS)
}
pub fn set_num_tickets(&mut self, v: isize) {
self.message.body.set_field(tag::NUM_TICKETS, fixer::fix_int::FIXInt::from(v));
}
pub fn get_num_tickets(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::NumTicketsField::new(0);
self.message.body.get_field(tag::NUM_TICKETS, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_num_tickets(&self) -> bool {
self.message.body.has(tag::NUM_TICKETS)
}
pub fn set_out_main_cntry_u_index(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::OUT_MAIN_CNTRY_U_INDEX, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_out_main_cntry_u_index(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::OutMainCntryUIndexField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::OUT_MAIN_CNTRY_U_INDEX, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_out_main_cntry_u_index(&self) -> bool {
self.message.body.has(tag::OUT_MAIN_CNTRY_U_INDEX)
}
pub fn set_prog_period_interval(&mut self, v: isize) {
self.message.body.set_field(tag::PROG_PERIOD_INTERVAL, fixer::fix_int::FIXInt::from(v));
}
pub fn get_prog_period_interval(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ProgPeriodIntervalField::new(0);
self.message.body.get_field(tag::PROG_PERIOD_INTERVAL, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_prog_period_interval(&self) -> bool {
self.message.body.has(tag::PROG_PERIOD_INTERVAL)
}
pub fn set_prog_rpt_reqs(&mut self, v: isize) {
self.message.body.set_field(tag::PROG_RPT_REQS, fixer::fix_int::FIXInt::from(v));
}
pub fn get_prog_rpt_reqs(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::ProgRptReqsField::new(0);
self.message.body.get_field(tag::PROG_RPT_REQS, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_prog_rpt_reqs(&self) -> bool {
self.message.body.has(tag::PROG_RPT_REQS)
}
pub fn set_side_value1(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::SIDE_VALUE1, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_side_value1(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::SideValue1Field::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::SIDE_VALUE1, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_side_value1(&self) -> bool {
self.message.body.has(tag::SIDE_VALUE1)
}
pub fn set_side_value2(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::SIDE_VALUE2, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_side_value2(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::SideValue2Field::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::SIDE_VALUE2, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_side_value2(&self) -> bool {
self.message.body.has(tag::SIDE_VALUE2)
}
pub fn set_strike_time(&mut self, v: Timestamp) {
self.message.body.set_field(tag::STRIKE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
time: v,
precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
});
}
pub fn get_strike_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
let mut fld = field::StrikeTimeField::new(Timestamp::UNIX_EPOCH);
self.message.body.get_field(tag::STRIKE_TIME, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_strike_time(&self) -> bool {
self.message.body.has(tag::STRIKE_TIME)
}
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_tot_no_related_sym(&mut self, v: isize) {
self.message.body.set_field(tag::TOT_NO_RELATED_SYM, fixer::fix_int::FIXInt::from(v));
}
pub fn get_tot_no_related_sym(&self) -> Result<isize, MessageRejectErrorEnum> {
let mut fld = field::TotNoRelatedSymField::new(0);
self.message.body.get_field(tag::TOT_NO_RELATED_SYM, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_tot_no_related_sym(&self) -> bool {
self.message.body.has(tag::TOT_NO_RELATED_SYM)
}
pub fn set_trade_date(&mut self, v: String) {
self.message.body.set_field(tag::TRADE_DATE, FIXString::from(v));
}
pub fn get_trade_date(&self) -> Result<String, MessageRejectErrorEnum> {
let mut fld = field::TradeDateField::new(String::new());
self.message.body.get_field(tag::TRADE_DATE, &mut fld.0)?;
Ok(fld.value().to_string())
}
pub fn has_trade_date(&self) -> bool {
self.message.body.has(tag::TRADE_DATE)
}
pub fn set_wt_average_liquidity(&mut self, val: Decimal, scale: i32) {
self.message.body.set_field(tag::WT_AVERAGE_LIQUIDITY, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
}
pub fn get_wt_average_liquidity(&self) -> Result<Decimal, MessageRejectErrorEnum> {
let mut fld = field::WtAverageLiquidityField::new(Decimal::ZERO, 0);
self.message.body.get_field(tag::WT_AVERAGE_LIQUIDITY, &mut fld.0)?;
Ok(fld.value())
}
pub fn has_wt_average_liquidity(&self) -> bool {
self.message.body.has(tag::WT_AVERAGE_LIQUIDITY)
}
}
pub type RouteOut = fn(msg: BidRequest, 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(BidRequest::from_message(msg.clone()), session_id)
};
("7", "k", Box::new(r))
}