Skip to main content

fixer_fix/fix44/
trading_session_status.rs

1// Code generated by fixer-gen. DO NOT EDIT.
2#![allow(clippy::new_without_default)]
3#![allow(clippy::needless_pass_by_value)]
4#![allow(clippy::too_many_arguments)]
5#![allow(unused_imports)]
6
7use fixer::message::Message;
8use fixer::fix_string::FIXString;
9use fixer::errors::MessageRejectErrorEnum;
10use fixer::session::session_id::SessionID;
11
12use rust_decimal::Decimal;
13
14
15use jiff::Timestamp;
16
17use crate::field;
18use crate::tag;
19
20/// `TradingSessionStatus` is the `fix44` `TradingSessionStatus` type, `MsgType` = h.
21pub struct TradingSessionStatus {
22    pub message: Message,
23}
24
25impl TradingSessionStatus {
26    /// Creates a new `TradingSessionStatus` with required fields.
27    pub fn new(trading_session_id: field::TradingSessionIDField, trad_ses_status: field::TradSesStatusField) -> Self {
28        let mut msg = Message::new();
29        msg.header.set_field(tag::MSG_TYPE, FIXString::from("h".to_string()));
30
31        msg.body.set_field(tag::TRADING_SESSION_ID, trading_session_id.0);
32
33        msg.body.set_field(tag::TRAD_SES_STATUS, trad_ses_status.0);
34
35        Self { message: msg }
36    }
37
38    /// Creates a `TradingSessionStatus` from an existing `Message`.
39    pub fn from_message(msg: Message) -> Self {
40        Self { message: msg }
41    }
42
43    /// Returns the underlying `Message`.
44    pub fn to_message(self) -> Message {
45        self.message
46    }
47
48
49
50
51    /// Sets `EncodedText`, Tag 355.
52    pub fn set_encoded_text(&mut self, v: String) {
53        self.message.body.set_field(tag::ENCODED_TEXT, FIXString::from(v));
54    }
55
56    /// Gets `EncodedText`, Tag 355.
57    pub fn get_encoded_text(&self) -> Result<String, MessageRejectErrorEnum> {
58        let mut fld = field::EncodedTextField::new(String::new());
59        self.message.body.get_field(tag::ENCODED_TEXT, &mut fld.0)?;
60        Ok(fld.value().to_string())
61    }
62
63
64    /// Returns true if `EncodedText` is present, Tag 355.
65    pub fn has_encoded_text(&self) -> bool {
66        self.message.body.has(tag::ENCODED_TEXT)
67    }
68
69
70
71
72    /// Sets `EncodedTextLen`, Tag 354.
73    pub fn set_encoded_text_len(&mut self, v: isize) {
74        self.message.body.set_field(tag::ENCODED_TEXT_LEN, fixer::fix_int::FIXInt::from(v));
75    }
76
77    /// Gets `EncodedTextLen`, Tag 354.
78    pub fn get_encoded_text_len(&self) -> Result<isize, MessageRejectErrorEnum> {
79        let mut fld = field::EncodedTextLenField::new(0);
80        self.message.body.get_field(tag::ENCODED_TEXT_LEN, &mut fld.0)?;
81        Ok(fld.value())
82    }
83
84
85    /// Returns true if `EncodedTextLen` is present, Tag 354.
86    pub fn has_encoded_text_len(&self) -> bool {
87        self.message.body.has(tag::ENCODED_TEXT_LEN)
88    }
89
90
91
92
93    /// Sets `Text`, Tag 58.
94    pub fn set_text(&mut self, v: String) {
95        self.message.body.set_field(tag::TEXT, FIXString::from(v));
96    }
97
98    /// Gets `Text`, Tag 58.
99    pub fn get_text(&self) -> Result<String, MessageRejectErrorEnum> {
100        let mut fld = field::TextField::new(String::new());
101        self.message.body.get_field(tag::TEXT, &mut fld.0)?;
102        Ok(fld.value().to_string())
103    }
104
105
106    /// Returns true if `Text` is present, Tag 58.
107    pub fn has_text(&self) -> bool {
108        self.message.body.has(tag::TEXT)
109    }
110
111
112
113
114    /// Sets `TotalVolumeTraded`, Tag 387.
115    pub fn set_total_volume_traded(&mut self, val: Decimal, scale: i32) {
116        self.message.body.set_field(tag::TOTAL_VOLUME_TRADED, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
117    }
118
119    /// Gets `TotalVolumeTraded`, Tag 387.
120    pub fn get_total_volume_traded(&self) -> Result<Decimal, MessageRejectErrorEnum> {
121        let mut fld = field::TotalVolumeTradedField::new(Decimal::ZERO, 0);
122        self.message.body.get_field(tag::TOTAL_VOLUME_TRADED, &mut fld.0)?;
123        Ok(fld.value())
124    }
125
126
127    /// Returns true if `TotalVolumeTraded` is present, Tag 387.
128    pub fn has_total_volume_traded(&self) -> bool {
129        self.message.body.has(tag::TOTAL_VOLUME_TRADED)
130    }
131
132
133
134
135    /// Sets `TradSesCloseTime`, Tag 344.
136    pub fn set_trad_ses_close_time(&mut self, v: Timestamp) {
137        self.message.body.set_field(tag::TRAD_SES_CLOSE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
138            time: v,
139            precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
140        });
141    }
142
143    /// Gets `TradSesCloseTime`, Tag 344.
144    pub fn get_trad_ses_close_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
145        let mut fld = field::TradSesCloseTimeField::new(Timestamp::UNIX_EPOCH);
146        self.message.body.get_field(tag::TRAD_SES_CLOSE_TIME, &mut fld.0)?;
147        Ok(fld.value())
148    }
149
150
151    /// Returns true if `TradSesCloseTime` is present, Tag 344.
152    pub fn has_trad_ses_close_time(&self) -> bool {
153        self.message.body.has(tag::TRAD_SES_CLOSE_TIME)
154    }
155
156
157
158
159    /// Sets `TradSesEndTime`, Tag 345.
160    pub fn set_trad_ses_end_time(&mut self, v: Timestamp) {
161        self.message.body.set_field(tag::TRAD_SES_END_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
162            time: v,
163            precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
164        });
165    }
166
167    /// Gets `TradSesEndTime`, Tag 345.
168    pub fn get_trad_ses_end_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
169        let mut fld = field::TradSesEndTimeField::new(Timestamp::UNIX_EPOCH);
170        self.message.body.get_field(tag::TRAD_SES_END_TIME, &mut fld.0)?;
171        Ok(fld.value())
172    }
173
174
175    /// Returns true if `TradSesEndTime` is present, Tag 345.
176    pub fn has_trad_ses_end_time(&self) -> bool {
177        self.message.body.has(tag::TRAD_SES_END_TIME)
178    }
179
180
181
182
183    /// Sets `TradSesMethod`, Tag 338.
184    pub fn set_trad_ses_method(&mut self, v: isize) {
185        self.message.body.set_field(tag::TRAD_SES_METHOD, fixer::fix_int::FIXInt::from(v));
186    }
187
188    /// Gets `TradSesMethod`, Tag 338.
189    pub fn get_trad_ses_method(&self) -> Result<isize, MessageRejectErrorEnum> {
190        let mut fld = field::TradSesMethodField::new(0);
191        self.message.body.get_field(tag::TRAD_SES_METHOD, &mut fld.0)?;
192        Ok(fld.value())
193    }
194
195
196    /// Returns true if `TradSesMethod` is present, Tag 338.
197    pub fn has_trad_ses_method(&self) -> bool {
198        self.message.body.has(tag::TRAD_SES_METHOD)
199    }
200
201
202
203
204    /// Sets `TradSesMode`, Tag 339.
205    pub fn set_trad_ses_mode(&mut self, v: isize) {
206        self.message.body.set_field(tag::TRAD_SES_MODE, fixer::fix_int::FIXInt::from(v));
207    }
208
209    /// Gets `TradSesMode`, Tag 339.
210    pub fn get_trad_ses_mode(&self) -> Result<isize, MessageRejectErrorEnum> {
211        let mut fld = field::TradSesModeField::new(0);
212        self.message.body.get_field(tag::TRAD_SES_MODE, &mut fld.0)?;
213        Ok(fld.value())
214    }
215
216
217    /// Returns true if `TradSesMode` is present, Tag 339.
218    pub fn has_trad_ses_mode(&self) -> bool {
219        self.message.body.has(tag::TRAD_SES_MODE)
220    }
221
222
223
224
225    /// Sets `TradSesOpenTime`, Tag 342.
226    pub fn set_trad_ses_open_time(&mut self, v: Timestamp) {
227        self.message.body.set_field(tag::TRAD_SES_OPEN_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
228            time: v,
229            precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
230        });
231    }
232
233    /// Gets `TradSesOpenTime`, Tag 342.
234    pub fn get_trad_ses_open_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
235        let mut fld = field::TradSesOpenTimeField::new(Timestamp::UNIX_EPOCH);
236        self.message.body.get_field(tag::TRAD_SES_OPEN_TIME, &mut fld.0)?;
237        Ok(fld.value())
238    }
239
240
241    /// Returns true if `TradSesOpenTime` is present, Tag 342.
242    pub fn has_trad_ses_open_time(&self) -> bool {
243        self.message.body.has(tag::TRAD_SES_OPEN_TIME)
244    }
245
246
247
248
249    /// Sets `TradSesPreCloseTime`, Tag 343.
250    pub fn set_trad_ses_pre_close_time(&mut self, v: Timestamp) {
251        self.message.body.set_field(tag::TRAD_SES_PRE_CLOSE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
252            time: v,
253            precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
254        });
255    }
256
257    /// Gets `TradSesPreCloseTime`, Tag 343.
258    pub fn get_trad_ses_pre_close_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
259        let mut fld = field::TradSesPreCloseTimeField::new(Timestamp::UNIX_EPOCH);
260        self.message.body.get_field(tag::TRAD_SES_PRE_CLOSE_TIME, &mut fld.0)?;
261        Ok(fld.value())
262    }
263
264
265    /// Returns true if `TradSesPreCloseTime` is present, Tag 343.
266    pub fn has_trad_ses_pre_close_time(&self) -> bool {
267        self.message.body.has(tag::TRAD_SES_PRE_CLOSE_TIME)
268    }
269
270
271
272
273    /// Sets `TradSesReqID`, Tag 335.
274    pub fn set_trad_ses_req_id(&mut self, v: String) {
275        self.message.body.set_field(tag::TRAD_SES_REQ_ID, FIXString::from(v));
276    }
277
278    /// Gets `TradSesReqID`, Tag 335.
279    pub fn get_trad_ses_req_id(&self) -> Result<String, MessageRejectErrorEnum> {
280        let mut fld = field::TradSesReqIDField::new(String::new());
281        self.message.body.get_field(tag::TRAD_SES_REQ_ID, &mut fld.0)?;
282        Ok(fld.value().to_string())
283    }
284
285
286    /// Returns true if `TradSesReqID` is present, Tag 335.
287    pub fn has_trad_ses_req_id(&self) -> bool {
288        self.message.body.has(tag::TRAD_SES_REQ_ID)
289    }
290
291
292
293
294    /// Sets `TradSesStartTime`, Tag 341.
295    pub fn set_trad_ses_start_time(&mut self, v: Timestamp) {
296        self.message.body.set_field(tag::TRAD_SES_START_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
297            time: v,
298            precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
299        });
300    }
301
302    /// Gets `TradSesStartTime`, Tag 341.
303    pub fn get_trad_ses_start_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
304        let mut fld = field::TradSesStartTimeField::new(Timestamp::UNIX_EPOCH);
305        self.message.body.get_field(tag::TRAD_SES_START_TIME, &mut fld.0)?;
306        Ok(fld.value())
307    }
308
309
310    /// Returns true if `TradSesStartTime` is present, Tag 341.
311    pub fn has_trad_ses_start_time(&self) -> bool {
312        self.message.body.has(tag::TRAD_SES_START_TIME)
313    }
314
315
316
317
318    /// Sets `TradSesStatus`, Tag 340.
319    pub fn set_trad_ses_status(&mut self, v: isize) {
320        self.message.body.set_field(tag::TRAD_SES_STATUS, fixer::fix_int::FIXInt::from(v));
321    }
322
323    /// Gets `TradSesStatus`, Tag 340.
324    pub fn get_trad_ses_status(&self) -> Result<isize, MessageRejectErrorEnum> {
325        let mut fld = field::TradSesStatusField::new(0);
326        self.message.body.get_field(tag::TRAD_SES_STATUS, &mut fld.0)?;
327        Ok(fld.value())
328    }
329
330
331    /// Returns true if `TradSesStatus` is present, Tag 340.
332    pub fn has_trad_ses_status(&self) -> bool {
333        self.message.body.has(tag::TRAD_SES_STATUS)
334    }
335
336
337
338
339    /// Sets `TradSesStatusRejReason`, Tag 567.
340    pub fn set_trad_ses_status_rej_reason(&mut self, v: isize) {
341        self.message.body.set_field(tag::TRAD_SES_STATUS_REJ_REASON, fixer::fix_int::FIXInt::from(v));
342    }
343
344    /// Gets `TradSesStatusRejReason`, Tag 567.
345    pub fn get_trad_ses_status_rej_reason(&self) -> Result<isize, MessageRejectErrorEnum> {
346        let mut fld = field::TradSesStatusRejReasonField::new(0);
347        self.message.body.get_field(tag::TRAD_SES_STATUS_REJ_REASON, &mut fld.0)?;
348        Ok(fld.value())
349    }
350
351
352    /// Returns true if `TradSesStatusRejReason` is present, Tag 567.
353    pub fn has_trad_ses_status_rej_reason(&self) -> bool {
354        self.message.body.has(tag::TRAD_SES_STATUS_REJ_REASON)
355    }
356
357
358
359
360    /// Sets `TradingSessionID`, Tag 336.
361    pub fn set_trading_session_id(&mut self, v: String) {
362        self.message.body.set_field(tag::TRADING_SESSION_ID, FIXString::from(v));
363    }
364
365    /// Gets `TradingSessionID`, Tag 336.
366    pub fn get_trading_session_id(&self) -> Result<String, MessageRejectErrorEnum> {
367        let mut fld = field::TradingSessionIDField::new(String::new());
368        self.message.body.get_field(tag::TRADING_SESSION_ID, &mut fld.0)?;
369        Ok(fld.value().to_string())
370    }
371
372
373    /// Returns true if `TradingSessionID` is present, Tag 336.
374    pub fn has_trading_session_id(&self) -> bool {
375        self.message.body.has(tag::TRADING_SESSION_ID)
376    }
377
378
379
380
381    /// Sets `TradingSessionSubID`, Tag 625.
382    pub fn set_trading_session_sub_id(&mut self, v: String) {
383        self.message.body.set_field(tag::TRADING_SESSION_SUB_ID, FIXString::from(v));
384    }
385
386    /// Gets `TradingSessionSubID`, Tag 625.
387    pub fn get_trading_session_sub_id(&self) -> Result<String, MessageRejectErrorEnum> {
388        let mut fld = field::TradingSessionSubIDField::new(String::new());
389        self.message.body.get_field(tag::TRADING_SESSION_SUB_ID, &mut fld.0)?;
390        Ok(fld.value().to_string())
391    }
392
393
394    /// Returns true if `TradingSessionSubID` is present, Tag 625.
395    pub fn has_trading_session_sub_id(&self) -> bool {
396        self.message.body.has(tag::TRADING_SESSION_SUB_ID)
397    }
398
399
400
401
402    /// Sets `UnsolicitedIndicator`, Tag 325.
403    pub fn set_unsolicited_indicator(&mut self, v: bool) {
404        self.message.body.set_field(tag::UNSOLICITED_INDICATOR, fixer::fix_boolean::FIXBoolean::from(v));
405    }
406
407    /// Gets `UnsolicitedIndicator`, Tag 325.
408    pub fn get_unsolicited_indicator(&self) -> Result<bool, MessageRejectErrorEnum> {
409        let mut fld = field::UnsolicitedIndicatorField::new(false);
410        self.message.body.get_field(tag::UNSOLICITED_INDICATOR, &mut fld.0)?;
411        Ok(fld.value())
412    }
413
414
415    /// Returns true if `UnsolicitedIndicator` is present, Tag 325.
416    pub fn has_unsolicited_indicator(&self) -> bool {
417        self.message.body.has(tag::UNSOLICITED_INDICATOR)
418    }
419
420
421}
422
423/// `RouteOut` is the callback type for routing `TradingSessionStatus` messages.
424pub type RouteOut = fn(msg: TradingSessionStatus, session_id: SessionID) -> Result<(), MessageRejectErrorEnum>;
425
426/// Route type returned by the `route` function.
427pub type Route = (&'static str, &'static str, Box<dyn Fn(&Message, SessionID) -> Result<(), MessageRejectErrorEnum> + Send>);
428
429/// Returns the begin string, message type, and route function for `TradingSessionStatus`.
430pub fn route(router: RouteOut) -> Route {
431    let r = move |msg: &Message, session_id: SessionID| -> Result<(), MessageRejectErrorEnum> {
432        router(TradingSessionStatus::from_message(msg.clone()), session_id)
433    };
434    ("FIX.4.4", "h", Box::new(r))
435}