fixer_fix/fix50/
security_list.rs1#![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
12
13use crate::field;
14use crate::tag;
15
16pub struct SecurityList {
18 pub message: Message,
19}
20
21impl SecurityList {
22 pub fn new() -> Self {
24 let mut msg = Message::new();
25 msg.header.set_field(tag::MSG_TYPE, FIXString::from("y".to_string()));
26
27 Self { message: msg }
28 }
29
30 pub fn from_message(msg: Message) -> Self {
32 Self { message: msg }
33 }
34
35 pub fn to_message(self) -> Message {
37 self.message
38 }
39
40
41
42
43 pub fn set_clearing_business_date(&mut self, v: String) {
45 self.message.body.set_field(tag::CLEARING_BUSINESS_DATE, FIXString::from(v));
46 }
47
48 pub fn get_clearing_business_date(&self) -> Result<String, MessageRejectErrorEnum> {
50 let mut fld = field::ClearingBusinessDateField::new(String::new());
51 self.message.body.get_field(tag::CLEARING_BUSINESS_DATE, &mut fld.0)?;
52 Ok(fld.value().to_string())
53 }
54
55
56 pub fn has_clearing_business_date(&self) -> bool {
58 self.message.body.has(tag::CLEARING_BUSINESS_DATE)
59 }
60
61
62
63
64 pub fn set_last_fragment(&mut self, v: bool) {
66 self.message.body.set_field(tag::LAST_FRAGMENT, fixer::fix_boolean::FIXBoolean::from(v));
67 }
68
69 pub fn get_last_fragment(&self) -> Result<bool, MessageRejectErrorEnum> {
71 let mut fld = field::LastFragmentField::new(false);
72 self.message.body.get_field(tag::LAST_FRAGMENT, &mut fld.0)?;
73 Ok(fld.value())
74 }
75
76
77 pub fn has_last_fragment(&self) -> bool {
79 self.message.body.has(tag::LAST_FRAGMENT)
80 }
81
82
83
84
85 pub fn set_no_related_sym(&mut self, v: isize) {
87 self.message.body.set_field(tag::NO_RELATED_SYM, fixer::fix_int::FIXInt::from(v));
88 }
89
90 pub fn get_no_related_sym(&self) -> Result<isize, MessageRejectErrorEnum> {
92 let mut fld = field::NoRelatedSymField::new(0);
93 self.message.body.get_field(tag::NO_RELATED_SYM, &mut fld.0)?;
94 Ok(fld.value())
95 }
96
97
98 pub fn has_no_related_sym(&self) -> bool {
100 self.message.body.has(tag::NO_RELATED_SYM)
101 }
102
103
104
105
106 pub fn set_security_report_id(&mut self, v: isize) {
108 self.message.body.set_field(tag::SECURITY_REPORT_ID, fixer::fix_int::FIXInt::from(v));
109 }
110
111 pub fn get_security_report_id(&self) -> Result<isize, MessageRejectErrorEnum> {
113 let mut fld = field::SecurityReportIDField::new(0);
114 self.message.body.get_field(tag::SECURITY_REPORT_ID, &mut fld.0)?;
115 Ok(fld.value())
116 }
117
118
119 pub fn has_security_report_id(&self) -> bool {
121 self.message.body.has(tag::SECURITY_REPORT_ID)
122 }
123
124
125
126
127 pub fn set_security_req_id(&mut self, v: String) {
129 self.message.body.set_field(tag::SECURITY_REQ_ID, FIXString::from(v));
130 }
131
132 pub fn get_security_req_id(&self) -> Result<String, MessageRejectErrorEnum> {
134 let mut fld = field::SecurityReqIDField::new(String::new());
135 self.message.body.get_field(tag::SECURITY_REQ_ID, &mut fld.0)?;
136 Ok(fld.value().to_string())
137 }
138
139
140 pub fn has_security_req_id(&self) -> bool {
142 self.message.body.has(tag::SECURITY_REQ_ID)
143 }
144
145
146
147
148 pub fn set_security_request_result(&mut self, v: isize) {
150 self.message.body.set_field(tag::SECURITY_REQUEST_RESULT, fixer::fix_int::FIXInt::from(v));
151 }
152
153 pub fn get_security_request_result(&self) -> Result<isize, MessageRejectErrorEnum> {
155 let mut fld = field::SecurityRequestResultField::new(0);
156 self.message.body.get_field(tag::SECURITY_REQUEST_RESULT, &mut fld.0)?;
157 Ok(fld.value())
158 }
159
160
161 pub fn has_security_request_result(&self) -> bool {
163 self.message.body.has(tag::SECURITY_REQUEST_RESULT)
164 }
165
166
167
168
169 pub fn set_security_response_id(&mut self, v: String) {
171 self.message.body.set_field(tag::SECURITY_RESPONSE_ID, FIXString::from(v));
172 }
173
174 pub fn get_security_response_id(&self) -> Result<String, MessageRejectErrorEnum> {
176 let mut fld = field::SecurityResponseIDField::new(String::new());
177 self.message.body.get_field(tag::SECURITY_RESPONSE_ID, &mut fld.0)?;
178 Ok(fld.value().to_string())
179 }
180
181
182 pub fn has_security_response_id(&self) -> bool {
184 self.message.body.has(tag::SECURITY_RESPONSE_ID)
185 }
186
187
188
189
190 pub fn set_tot_no_related_sym(&mut self, v: isize) {
192 self.message.body.set_field(tag::TOT_NO_RELATED_SYM, fixer::fix_int::FIXInt::from(v));
193 }
194
195 pub fn get_tot_no_related_sym(&self) -> Result<isize, MessageRejectErrorEnum> {
197 let mut fld = field::TotNoRelatedSymField::new(0);
198 self.message.body.get_field(tag::TOT_NO_RELATED_SYM, &mut fld.0)?;
199 Ok(fld.value())
200 }
201
202
203 pub fn has_tot_no_related_sym(&self) -> bool {
205 self.message.body.has(tag::TOT_NO_RELATED_SYM)
206 }
207
208
209}
210
211pub type RouteOut = fn(msg: SecurityList, session_id: SessionID) -> Result<(), MessageRejectErrorEnum>;
213
214pub type Route = (&'static str, &'static str, Box<dyn Fn(&Message, SessionID) -> Result<(), MessageRejectErrorEnum> + Send>);
216
217pub fn route(router: RouteOut) -> Route {
219 let r = move |msg: &Message, session_id: SessionID| -> Result<(), MessageRejectErrorEnum> {
220 router(SecurityList::from_message(msg.clone()), session_id)
221 };
222 ("7", "y", Box::new(r))
223}