libjmmcg
release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
mit_to_fix_conversions.hpp
Go to the documentation of this file.
1
#
ifndef
ISIMUD_EXCHANGES_conversions_mit_to_fix_conversions_hpp
2
#
define
ISIMUD_EXCHANGES_conversions_mit_to_fix_conversions_hpp
3
4
/******************************************************************************
5
** Copyright © 2015 by J.M.McGuiness, isimud@hussar.me.uk
6
**
7
** This library is free software; you can redistribute it and/or
8
** modify it under the terms of the GNU Lesser General Public
9
** License as published by the Free Software Foundation; either
10
** version 2.1 of the License, or (at your option) any later version.
11
**
12
** This library is distributed in the hope that it will be useful,
13
** but WITHOUT ANY WARRANTY; without even the implied warranty of
14
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
** Lesser General Public License for more details.
16
**
17
** You should have received a copy of the GNU Lesser General Public
18
** License along with this library; if not, write to the Free Software
19
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*/
21
22
#
include
"../../exchanges/FIX/v5.0sp2/messages.hpp"
23
#
include
"../../exchanges/MIT/BIT/messages.hpp"
24
#
include
"../../exchanges/MIT/JSE/messages.hpp"
25
#
include
"../../exchanges/MIT/LSE/messages.hpp"
26
#
include
"../../exchanges/MIT/OSLO/messages.hpp"
27
#
include
"../../exchanges/MIT/TRQ/messages.hpp"
28
29
namespace
isimud
{
namespace
ISIMUD_VER_NAMESPACE
{
namespace
exchanges {
namespace
FIX
{
namespace
common
{
30
31
/**
32
Note that only ISIN symbology is supported.
33
*/
34
template
<
class
RefData>
constexpr
inline
int
35
convert
(
MIT
::
common
::SecurityID_t
const
&key, RefData
const
&ref_data,
char
*buff, [[
maybe_unused
]]
std
::size_t sz) {
36
assert(!ref_data.lookup_isin().empty());
37
auto
const
&i=ref_data.lookup_isin().find(key);
38
assert(i!=ref_data.lookup_isin().end());
39
assert(
sizeof
(
typename
RefData::lookup_isin_t::mapped_type::element_type)<=sz);
40
libjmmcg::memcpy_opt(i->second.isin_.data(),
reinterpret_cast
<
typename
RefData::lookup_isin_t::mapped_type::element_type::block_t &>(*buff));
41
return
sizeof
(
typename
RefData::lookup_isin_t::mapped_type::element_type);
42
}
43
44
/**
45
\todo What should be done with ExecType's that cannot be mapped?.
46
*/
47
inline
ExecType
48
convert
(
MIT
::
common
::
ExecType
const
&a)
noexcept
(
false
) {
49
switch
(a) {
50
case
MIT
::
common
::
ExecType
::
New
:
51
return
ExecType
::
New
;
52
case
MIT
::
common
::
ExecType
::
Cancelled
:
53
return
ExecType
::
Canceled
;
54
case
MIT
::
common
::
ExecType
::
Replaced
:
55
return
ExecType
::
Replaced
;
56
case
MIT
::
common
::
ExecType
::
Rejected
:
57
return
ExecType
::
Rejected
;
58
case
MIT
::
common
::
ExecType
::
Suspended
:
59
return
ExecType
::
Suspended
;
60
case
MIT
::
common
::
ExecType
::
Expired
:
61
return
ExecType
::
Expired
;
62
case
MIT
::
common
::
ExecType
::
Restated
:
63
return
ExecType
::
Restated
;
64
case
MIT
::
common
::
ExecType
::
Trade
:
65
return
ExecType
::
Trade
;
66
case
MIT
::
common
::
ExecType
::
TradeCorrect
:
67
return
ExecType
::
Trade_Correct
;
68
case
MIT
::
common
::
ExecType
::
TradeCancel
:
69
return
ExecType
::
Trade_Cancel
;
70
case
MIT
::
common
::
ExecType
::
Triggered
:
71
return
ExecType
::
Triggered_or_Activated_by_System
;
72
default
: {
73
std
::ostringstream os;
74
os<<
"Unknown MIT ExecType: "
<<a;
75
throw
std
::runtime_error(os.str());
76
}
77
};
78
}
79
80
/**
81
\todo What should be done with OrderStatus's that cannot be mapped?.
82
*/
83
inline
OrdStatus
84
convert
(
MIT
::
common
::
OrderStatus
const
&a)
noexcept
(
false
) {
85
switch
(a) {
86
case
MIT
::
common
::
OrderStatus
::
New
:
87
return
OrdStatus
::
New
;
88
case
MIT
::
common
::
OrderStatus
::
Partiallyfilled
:
89
return
OrdStatus
::
Partially_filled
;
90
case
MIT
::
common
::
OrderStatus
::
Filled
:
91
return
OrdStatus
::
Filled
;
92
case
MIT
::
common
::
OrderStatus
::
Cancelled
:
93
return
OrdStatus
::
Canceled
;
94
case
MIT
::
common
::
OrderStatus
::
Expired
:
95
return
OrdStatus
::
Expired
;
96
case
MIT
::
common
::
OrderStatus
::
Rejected
:
97
return
OrdStatus
::
Rejected
;
98
case
MIT
::
common
::
OrderStatus
::
Suspended
:
99
return
OrdStatus
::
Suspended
;
100
default
: {
101
std
::ostringstream os;
102
os<<
"Unknown MIT OrderStatus: "
<<a;
103
throw
std
::runtime_error(os.str());
104
}
105
};
106
}
107
108
inline
int
109
convert_MIT_price
(
MIT
::
common
::Price_t
const
&a,
char
*buff,
std
::size_t sz) {
110
const
double
c=
static_cast
<
double
>(a)/
MIT
::
common
::
implied_decimal_places
;
111
return
libjmmcg
::
tostring
(
c
,
buff
,
sz
)
;
112
}
113
114
/**
115
\todo What should be done with Side's that cannot be mapped?.
116
*/
117
constexpr
inline
char
118
convert
(
MIT
::
common
::
Side
const
&a) {
119
switch
(a) {
120
case
MIT
::
common
::
Side
::
Buy
:
121
return
'1'
;
122
case
MIT
::
common
::
Side
::
Sell
:
123
return
'2'
;
124
default
:
125
return
'?'
;
126
};
127
}
128
129
template
<>
130
template
<>
inline
__stdcall
131
Message
<
v5_0sp2
::
ExecutionReportSpecific
>::
Message
(
MIT
::
BIT
::
MsgTypes
::
ExecutionReport
const
&
msg
,
MIT
::
BIT
::
MsgTypes
::
ref_data
const
&
rd
)
132
:
Header_t
() {
133
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
ExecutionReport
>(
msg
);
134
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
135
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
136
data
+=
msg
.
clientOrderID
().
size
()-1;
137
data
=
add_field_tag
<
FieldsFast
::
SecurityIDSource
>(
data
);
138
*
data
=
static_cast
<
std
::
underlying_type
<
SecurityIDSource
>::
type
>(
SecurityIDSource
::
ISIN
);
139
++
data
;
140
data
=
add_field_tag
<
FieldsFast
::
SecurityID
>(
data
);
141
const
int
i
=
convert
(
msg
.
instrumentID
(),
rd
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
142
assert(i>0);
143
data
+=
i
;
144
data
=
add_field_tag
<
FieldsFast
::
ExecType
>(
data
);
145
*
data
=
static_cast
<
char
>(
convert
(
msg
.
execType
()));
146
++
data
;
147
data
=
add_field_tag
<
FieldsFast
::
Price
>(
data
);
148
const
int
j
=
convert_MIT_price
(
msg
.
executedPrice
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
149
assert(j>0);
150
data
+=
j
;
151
data
=
add_field_tag
<
FieldsFast
::
OrdStatus
>(
data
);
152
*
data
=
static_cast
<
char
>(
convert
(
msg
.
orderStatus
()));
153
++
data
;
154
data
=
add_field_tag
<
FieldsFast
::
OrderQty
>(
data
);
155
const
int
k
=
convert
(
msg
.
executedQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
156
assert(k>0);
157
data
+=
k
;
158
data
=
add_field_tag
<
FieldsFast
::
LeavesQty
>(
data
);
159
const
int
l
=
convert
(
msg
.
leavesQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
160
assert(l>0);
161
data
+=
l
;
162
data
=
add_field_tag
<
FieldsFast
::
Side
>(
data
);
163
*
data
=
convert
(
msg
.
side
());
164
++
data
;
165
data
=
write_ExDest
(
MIT
::
BIT
::
MsgTypes
::
MIC_code
,
data
);
166
data
=
write_TransactTime
(
data
);
167
// TODO msg.orderRejectCode();
168
finalise_msg
(
data
);
169
}
170
171
template
<>
172
template
<>
inline
__stdcall
173
Message
<
v5_0sp2
::
ExecutionReportSpecific
>::
Message
(
MIT
::
JSE
::
MsgTypes
::
ExecutionReport
const
&
msg
,
MIT
::
JSE
::
MsgTypes
::
ref_data
const
&
rd
)
174
:
Header_t
() {
175
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
ExecutionReport
>(
msg
);
176
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
177
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
178
data
+=
msg
.
clientOrderID
().
size
()-1;
179
data
=
add_field_tag
<
FieldsFast
::
SecurityIDSource
>(
data
);
180
*
data
=
static_cast
<
std
::
underlying_type
<
SecurityIDSource
>::
type
>(
SecurityIDSource
::
ISIN
);
181
++
data
;
182
data
=
add_field_tag
<
FieldsFast
::
SecurityID
>(
data
);
183
const
int
i
=
convert
(
msg
.
instrumentID
(),
rd
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
184
assert(i>0);
185
data
+=
i
;
186
data
=
add_field_tag
<
FieldsFast
::
ExecType
>(
data
);
187
*
data
=
static_cast
<
char
>(
convert
(
msg
.
execType
()));
188
++
data
;
189
data
=
add_field_tag
<
FieldsFast
::
Price
>(
data
);
190
const
int
j
=
convert_MIT_price
(
msg
.
executedPrice
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
191
assert(j>0);
192
data
+=
j
;
193
data
=
add_field_tag
<
FieldsFast
::
OrdStatus
>(
data
);
194
*
data
=
static_cast
<
char
>(
convert
(
msg
.
orderStatus
()));
195
++
data
;
196
data
=
add_field_tag
<
FieldsFast
::
OrderQty
>(
data
);
197
const
int
k
=
convert
(
msg
.
executedQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
198
assert(k>0);
199
data
+=
k
;
200
data
=
add_field_tag
<
FieldsFast
::
LeavesQty
>(
data
);
201
const
int
l
=
convert
(
msg
.
leavesQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
202
assert(l>0);
203
data
+=
l
;
204
data
=
add_field_tag
<
FieldsFast
::
Side
>(
data
);
205
*
data
=
convert
(
msg
.
side
());
206
++
data
;
207
data
=
write_ExDest
(
MIT
::
JSE
::
MsgTypes
::
MIC_code
,
data
);
208
data
=
write_TransactTime
(
data
);
209
// TODO msg.orderRejectCode();
210
finalise_msg
(
data
);
211
}
212
213
template
<>
214
template
<>
inline
__stdcall
215
Message
<
v5_0sp2
::
ExecutionReportSpecific
>::
Message
(
MIT
::
LSE
::
MsgTypes
::
ExecutionReport
const
&
msg
,
MIT
::
LSE
::
MsgTypes
::
ref_data
const
&
rd
)
216
:
Header_t
() {
217
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
ExecutionReport
>(
msg
);
218
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
219
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
220
data
+=
msg
.
clientOrderID
().
size
()-1;
221
data
=
add_field_tag
<
FieldsFast
::
SecurityIDSource
>(
data
);
222
*
data
=
static_cast
<
std
::
underlying_type
<
SecurityIDSource
>::
type
>(
SecurityIDSource
::
ISIN
);
223
++
data
;
224
data
=
add_field_tag
<
FieldsFast
::
SecurityID
>(
data
);
225
const
int
i
=
convert
(
msg
.
instrumentID
(),
rd
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
226
assert(i>0);
227
data
+=
i
;
228
data
=
add_field_tag
<
FieldsFast
::
ExecType
>(
data
);
229
*
data
=
static_cast
<
char
>(
convert
(
msg
.
execType
()));
230
++
data
;
231
data
=
add_field_tag
<
FieldsFast
::
Price
>(
data
);
232
const
int
j
=
convert_MIT_price
(
msg
.
executedPrice
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
233
assert(j>0);
234
data
+=
j
;
235
data
=
add_field_tag
<
FieldsFast
::
OrdStatus
>(
data
);
236
*
data
=
static_cast
<
char
>(
convert
(
msg
.
orderStatus
()));
237
++
data
;
238
data
=
add_field_tag
<
FieldsFast
::
OrderQty
>(
data
);
239
const
int
k
=
convert
(
msg
.
executedQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
240
assert(k>0);
241
data
+=
k
;
242
data
=
add_field_tag
<
FieldsFast
::
LeavesQty
>(
data
);
243
const
int
l
=
convert
(
msg
.
leavesQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
244
assert(l>0);
245
data
+=
l
;
246
data
=
add_field_tag
<
FieldsFast
::
Side
>(
data
);
247
*
data
=
convert
(
msg
.
side
());
248
++
data
;
249
data
=
write_ExDest
(
MIT
::
LSE
::
MsgTypes
::
MIC_code
,
data
);
250
data
=
write_TransactTime
(
data
);
251
// TODO msg.orderRejectCode();
252
finalise_msg
(
data
);
253
}
254
255
template
<>
256
template
<>
inline
__stdcall
257
Message
<
v5_0sp2
::
ExecutionReportSpecific
>::
Message
(
MIT
::
OSLO
::
MsgTypes
::
ExecutionReport
const
&
msg
,
MIT
::
OSLO
::
MsgTypes
::
ref_data
const
&
rd
)
258
:
Header_t
() {
259
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
ExecutionReport
>(
msg
);
260
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
261
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
262
data
+=
msg
.
clientOrderID
().
size
()-1;
263
data
=
add_field_tag
<
FieldsFast
::
SecurityIDSource
>(
data
);
264
*
data
=
static_cast
<
std
::
underlying_type
<
SecurityIDSource
>::
type
>(
SecurityIDSource
::
ISIN
);
265
++
data
;
266
data
=
add_field_tag
<
FieldsFast
::
SecurityID
>(
data
);
267
const
int
i
=
convert
(
msg
.
instrumentID
(),
rd
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
268
assert(i>0);
269
data
+=
i
;
270
data
=
add_field_tag
<
FieldsFast
::
ExecType
>(
data
);
271
*
data
=
static_cast
<
char
>(
convert
(
msg
.
execType
()));
272
++
data
;
273
data
=
add_field_tag
<
FieldsFast
::
Price
>(
data
);
274
const
int
j
=
convert_MIT_price
(
msg
.
executedPrice
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
275
assert(j>0);
276
data
+=
j
;
277
data
=
add_field_tag
<
FieldsFast
::
OrdStatus
>(
data
);
278
*
data
=
static_cast
<
char
>(
convert
(
msg
.
orderStatus
()));
279
++
data
;
280
data
=
add_field_tag
<
FieldsFast
::
OrderQty
>(
data
);
281
const
int
k
=
convert
(
msg
.
executedQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
282
assert(k>0);
283
data
+=
k
;
284
data
=
add_field_tag
<
FieldsFast
::
LeavesQty
>(
data
);
285
const
int
l
=
convert
(
msg
.
leavesQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
286
assert(l>0);
287
data
+=
l
;
288
data
=
add_field_tag
<
FieldsFast
::
Side
>(
data
);
289
*
data
=
convert
(
msg
.
side
());
290
++
data
;
291
data
=
write_ExDest
(
MIT
::
OSLO
::
MsgTypes
::
MIC_code
,
data
);
292
data
=
write_TransactTime
(
data
);
293
// TODO msg.orderRejectCode();
294
finalise_msg
(
data
);
295
}
296
297
template
<>
298
template
<>
inline
__stdcall
299
Message
<
v5_0sp2
::
ExecutionReportSpecific
>::
Message
(
MIT
::
TRQ
::
MsgTypes
::
ExecutionReport
const
&
msg
,
MIT
::
TRQ
::
MsgTypes
::
ref_data
const
&
rd
)
300
:
Header_t
() {
301
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
ExecutionReport
>(
msg
);
302
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
303
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
304
data
+=
msg
.
clientOrderID
().
size
()-1;
305
data
=
add_field_tag
<
FieldsFast
::
SecurityIDSource
>(
data
);
306
*
data
=
static_cast
<
std
::
underlying_type
<
SecurityIDSource
>::
type
>(
SecurityIDSource
::
ISIN
);
307
++
data
;
308
data
=
add_field_tag
<
FieldsFast
::
SecurityID
>(
data
);
309
const
int
i
=
convert
(
msg
.
instrumentID
(),
rd
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
310
assert(i>0);
311
data
+=
i
;
312
data
=
add_field_tag
<
FieldsFast
::
ExecType
>(
data
);
313
*
data
=
static_cast
<
char
>(
convert
(
msg
.
execType
()));
314
++
data
;
315
data
=
add_field_tag
<
FieldsFast
::
Price
>(
data
);
316
const
int
j
=
convert_MIT_price
(
msg
.
executedPrice
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
317
assert(j>0);
318
data
+=
j
;
319
data
=
add_field_tag
<
FieldsFast
::
OrdStatus
>(
data
);
320
*
data
=
static_cast
<
char
>(
convert
(
msg
.
orderStatus
()));
321
++
data
;
322
data
=
add_field_tag
<
FieldsFast
::
OrderQty
>(
data
);
323
const
int
k
=
convert
(
msg
.
executedQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
324
assert(k>0);
325
data
+=
k
;
326
data
=
add_field_tag
<
FieldsFast
::
LeavesQty
>(
data
);
327
const
int
l
=
convert
(
msg
.
leavesQty
(),
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
328
assert(l>0);
329
data
+=
l
;
330
data
=
add_field_tag
<
FieldsFast
::
Side
>(
data
);
331
*
data
=
convert
(
msg
.
side
());
332
++
data
;
333
data
=
write_ExDest
(
MIT
::
TRQ
::
MsgTypes
::
MIC_code
,
data
);
334
data
=
write_TransactTime
(
data
);
335
// TODO msg.orderRejectCode();
336
finalise_msg
(
data
);
337
}
338
339
template
<>
340
template
<>
inline
__stdcall
341
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
BIT
::
MsgTypes
::
ExecutionReport
const
&
msg
)
342
:
Header_t
() {
343
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
Reject
>(
msg
);
344
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
345
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
346
assert(i>0);
347
data
+=
i
;
348
data
=
write_ExDest
(
MIT
::
BIT
::
MsgTypes
::
MIC_code
,
data
);
349
data
=
write_TransactTime
(
data
);
350
finalise_msg
(
data
);
351
}
352
353
template
<>
354
template
<>
inline
__stdcall
355
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
JSE
::
MsgTypes
::
ExecutionReport
const
&
msg
)
356
:
Header_t
() {
357
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
Reject
>(
msg
);
358
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
359
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
360
assert(i>0);
361
data
+=
i
;
362
data
=
write_ExDest
(
MIT
::
JSE
::
MsgTypes
::
MIC_code
,
data
);
363
data
=
write_TransactTime
(
data
);
364
finalise_msg
(
data
);
365
}
366
367
template
<>
368
template
<>
inline
__stdcall
369
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
LSE
::
MsgTypes
::
ExecutionReport
const
&
msg
)
370
:
Header_t
() {
371
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
Reject
>(
msg
);
372
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
373
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
374
assert(i>0);
375
data
+=
i
;
376
data
=
write_ExDest
(
MIT
::
LSE
::
MsgTypes
::
MIC_code
,
data
);
377
data
=
write_TransactTime
(
data
);
378
finalise_msg
(
data
);
379
}
380
381
template
<>
382
template
<>
inline
__stdcall
383
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
OSLO
::
MsgTypes
::
ExecutionReport
const
&
msg
)
384
:
Header_t
() {
385
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
Reject
>(
msg
);
386
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
387
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
388
assert(i>0);
389
data
+=
i
;
390
data
=
write_ExDest
(
MIT
::
OSLO
::
MsgTypes
::
MIC_code
,
data
);
391
data
=
write_TransactTime
(
data
);
392
finalise_msg
(
data
);
393
}
394
395
template
<>
396
template
<>
inline
__stdcall
397
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
TRQ
::
MsgTypes
::
ExecutionReport
const
&
msg
)
398
:
Header_t
() {
399
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
Reject
>(
msg
);
400
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
401
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
402
assert(i>0);
403
data
+=
i
;
404
data
=
write_ExDest
(
MIT
::
TRQ
::
MsgTypes
::
MIC_code
,
data
);
405
data
=
write_TransactTime
(
data
);
406
finalise_msg
(
data
);
407
}
408
409
template
<>
410
template
<>
inline
__stdcall
411
Message
<
v5_0sp2
::
CancelRejectedSpecific
>::
Message
(
MIT
::
BIT
::
MsgTypes
::
OrderCancelReject
const
&
msg
)
412
:
Header_t
() {
413
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
OrderCancelReject
>(
msg
);
414
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
415
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
416
data
+=
msg
.
clientOrderID
().
size
()-1;
417
data
=
add_field_tag
<
FieldsFast
::
OrderID
>(
data
);
418
libjmmcg
::
memcpy_opt
(
msg
.
orderID
,
reinterpret_cast
<
MIT
::
common
::
OrderID_t
&>(*
data
));
419
data
+=
msg
.
orderID
.
size
()-1;
420
data
=
write_ExDest
(
MIT
::
BIT
::
MsgTypes
::
MIC_code
,
data
);
421
data
=
write_TransactTime
(
data
);
422
// TODO cancelRejectReason_;
423
finalise_msg
(
data
);
424
}
425
426
template
<>
427
template
<>
inline
__stdcall
428
Message
<
v5_0sp2
::
CancelRejectedSpecific
>::
Message
(
MIT
::
JSE
::
MsgTypes
::
OrderCancelReject
const
&
msg
)
429
:
Header_t
() {
430
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
OrderCancelReject
>(
msg
);
431
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
432
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
433
data
+=
msg
.
clientOrderID
().
size
()-1;
434
data
=
add_field_tag
<
FieldsFast
::
OrderID
>(
data
);
435
libjmmcg
::
memcpy_opt
(
msg
.
orderID
,
reinterpret_cast
<
MIT
::
common
::
OrderID_t
&>(*
data
));
436
data
+=
msg
.
orderID
.
size
()-1;
437
data
=
write_ExDest
(
MIT
::
JSE
::
MsgTypes
::
MIC_code
,
data
);
438
data
=
write_TransactTime
(
data
);
439
// TODO cancelRejectReason_;
440
finalise_msg
(
data
);
441
}
442
443
template
<>
444
template
<>
inline
__stdcall
445
Message
<
v5_0sp2
::
CancelRejectedSpecific
>::
Message
(
MIT
::
LSE
::
MsgTypes
::
OrderCancelReject
const
&
msg
)
446
:
Header_t
() {
447
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
OrderCancelReject
>(
msg
);
448
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
449
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
450
data
+=
msg
.
clientOrderID
().
size
()-1;
451
data
=
add_field_tag
<
FieldsFast
::
OrderID
>(
data
);
452
libjmmcg
::
memcpy_opt
(
msg
.
orderID
,
reinterpret_cast
<
MIT
::
common
::
OrderID_t
&>(*
data
));
453
data
+=
msg
.
orderID
.
size
()-1;
454
data
=
write_ExDest
(
MIT
::
LSE
::
MsgTypes
::
MIC_code
,
data
);
455
data
=
write_TransactTime
(
data
);
456
// TODO cancelRejectReason_;
457
finalise_msg
(
data
);
458
}
459
460
template
<>
461
template
<>
inline
__stdcall
462
Message
<
v5_0sp2
::
CancelRejectedSpecific
>::
Message
(
MIT
::
OSLO
::
MsgTypes
::
OrderCancelReject
const
&
msg
)
463
:
Header_t
() {
464
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
OrderCancelReject
>(
msg
);
465
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
466
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
467
data
+=
msg
.
clientOrderID
().
size
()-1;
468
data
=
add_field_tag
<
FieldsFast
::
OrderID
>(
data
);
469
libjmmcg
::
memcpy_opt
(
msg
.
orderID
,
reinterpret_cast
<
MIT
::
common
::
OrderID_t
&>(*
data
));
470
data
+=
msg
.
orderID
.
size
()-1;
471
data
=
write_ExDest
(
MIT
::
OSLO
::
MsgTypes
::
MIC_code
,
data
);
472
data
=
write_TransactTime
(
data
);
473
// TODO cancelRejectReason_;
474
finalise_msg
(
data
);
475
}
476
477
template
<>
478
template
<>
inline
__stdcall
479
Message
<
v5_0sp2
::
CancelRejectedSpecific
>::
Message
(
MIT
::
TRQ
::
MsgTypes
::
OrderCancelReject
const
&
msg
)
480
:
Header_t
() {
481
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
OrderCancelReject
>(
msg
);
482
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
483
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
484
data
+=
msg
.
clientOrderID
().
size
()-1;
485
data
=
add_field_tag
<
FieldsFast
::
OrderID
>(
data
);
486
libjmmcg
::
memcpy_opt
(
msg
.
orderID
,
reinterpret_cast
<
MIT
::
common
::
OrderID_t
&>(*
data
));
487
data
+=
msg
.
orderID
.
size
()-1;
488
data
=
write_ExDest
(
MIT
::
TRQ
::
MsgTypes
::
MIC_code
,
data
);
489
data
=
write_TransactTime
(
data
);
490
// TODO cancelRejectReason_;
491
finalise_msg
(
data
);
492
}
493
494
template
<>
495
template
<>
inline
__stdcall
496
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
BIT
::
MsgTypes
::
Reject
const
&
msg
)
497
:
Header_t
() {
498
underlying_fix_data_buffer
::
iterator
data
=
set_header
<
MsgTypes
::
Reject
>();
499
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
500
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
501
data
+=
msg
.
clientOrderID
().
size
()-1;
502
data
=
write_ExDest
(
MIT
::
BIT
::
MsgTypes
::
MIC_code
,
data
);
503
data
=
write_TransactTime
(
data
);
504
// TODO
505
finalise_msg
(
data
);
506
}
507
508
template
<>
509
template
<>
inline
__stdcall
510
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
JSE
::
MsgTypes
::
Reject
const
&
msg
)
511
:
Header_t
() {
512
underlying_fix_data_buffer
::
iterator
data
=
set_header
<
MsgTypes
::
Reject
>();
513
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
514
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
515
data
+=
msg
.
clientOrderID
().
size
()-1;
516
data
=
write_ExDest
(
MIT
::
JSE
::
MsgTypes
::
MIC_code
,
data
);
517
data
=
write_TransactTime
(
data
);
518
// TODO
519
finalise_msg
(
data
);
520
}
521
522
template
<>
523
template
<>
inline
__stdcall
524
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
LSE
::
MsgTypes
::
Reject
const
&
msg
)
525
:
Header_t
() {
526
underlying_fix_data_buffer
::
iterator
data
=
set_header
<
MsgTypes
::
Reject
>();
527
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
528
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
529
data
+=
msg
.
clientOrderID
().
size
()-1;
530
data
=
write_ExDest
(
MIT
::
LSE
::
MsgTypes
::
MIC_code
,
data
);
531
data
=
write_TransactTime
(
data
);
532
// TODO
533
finalise_msg
(
data
);
534
}
535
536
template
<>
537
template
<>
inline
__stdcall
538
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
OSLO
::
MsgTypes
::
Reject
const
&
msg
)
539
:
Header_t
() {
540
underlying_fix_data_buffer
::
iterator
data
=
set_header
<
MsgTypes
::
Reject
>();
541
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
542
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
543
data
+=
msg
.
clientOrderID
().
size
()-1;
544
data
=
write_ExDest
(
MIT
::
OSLO
::
MsgTypes
::
MIC_code
,
data
);
545
data
=
write_TransactTime
(
data
);
546
// TODO
547
finalise_msg
(
data
);
548
}
549
550
template
<>
551
template
<>
inline
__stdcall
552
Message
<
v5_0sp2
::
OrderRejectedSpecific
>::
Message
(
MIT
::
TRQ
::
MsgTypes
::
Reject
const
&
msg
)
553
:
Header_t
() {
554
underlying_fix_data_buffer
::
iterator
data
=
set_header
<
MsgTypes
::
Reject
>();
555
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
556
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
557
data
+=
msg
.
clientOrderID
().
size
()-1;
558
data
=
write_ExDest
(
MIT
::
TRQ
::
MsgTypes
::
MIC_code
,
data
);
559
data
=
write_TransactTime
(
data
);
560
// TODO
561
finalise_msg
(
data
);
562
}
563
564
template
<>
565
template
<>
inline
__stdcall
566
Message
<
v5_0sp2
::
BusinessMessageRejectSpecific
>::
Message
(
MIT
::
BIT
::
MsgTypes
::
BusinessReject
const
&
msg
)
567
:
Header_t
() {
568
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
BusinessMessageReject
>(
msg
);
569
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
570
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
571
data
+=
msg
.
clientOrderID
().
size
()-1;
572
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
573
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
574
assert(i>0);
575
data
+=
i
;
576
data
=
write_ExDest
(
MIT
::
BIT
::
MsgTypes
::
MIC_code
,
data
);
577
data
=
write_TransactTime
(
data
);
578
// TODO
579
finalise_msg
(
data
);
580
}
581
582
template
<>
583
template
<>
inline
__stdcall
584
Message
<
v5_0sp2
::
BusinessMessageRejectSpecific
>::
Message
(
MIT
::
JSE
::
MsgTypes
::
BusinessReject
const
&
msg
)
585
:
Header_t
() {
586
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
BusinessMessageReject
>(
msg
);
587
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
588
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
589
data
+=
msg
.
clientOrderID
().
size
()-1;
590
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
591
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
592
assert(i>0);
593
data
+=
i
;
594
data
=
write_ExDest
(
MIT
::
JSE
::
MsgTypes
::
MIC_code
,
data
);
595
data
=
write_TransactTime
(
data
);
596
// TODO
597
finalise_msg
(
data
);
598
}
599
600
template
<>
601
template
<>
inline
__stdcall
602
Message
<
v5_0sp2
::
BusinessMessageRejectSpecific
>::
Message
(
MIT
::
LSE
::
MsgTypes
::
BusinessReject
const
&
msg
)
603
:
Header_t
() {
604
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
BusinessMessageReject
>(
msg
);
605
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
606
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
607
data
+=
msg
.
clientOrderID
().
size
()-1;
608
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
609
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
610
assert(i>0);
611
data
+=
i
;
612
data
=
write_ExDest
(
MIT
::
LSE
::
MsgTypes
::
MIC_code
,
data
);
613
data
=
write_TransactTime
(
data
);
614
// TODO
615
finalise_msg
(
data
);
616
}
617
618
template
<>
619
template
<>
inline
__stdcall
620
Message
<
v5_0sp2
::
BusinessMessageRejectSpecific
>::
Message
(
MIT
::
OSLO
::
MsgTypes
::
BusinessReject
const
&
msg
)
621
:
Header_t
() {
622
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
BusinessMessageReject
>(
msg
);
623
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
624
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
625
data
+=
msg
.
clientOrderID
().
size
()-1;
626
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
627
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
628
assert(i>0);
629
data
+=
i
;
630
data
=
write_ExDest
(
MIT
::
OSLO
::
MsgTypes
::
MIC_code
,
data
);
631
data
=
write_TransactTime
(
data
);
632
// TODO
633
finalise_msg
(
data
);
634
}
635
template
<>
636
template
<>
inline
__stdcall
637
Message
<
v5_0sp2
::
BusinessMessageRejectSpecific
>::
Message
(
MIT
::
TRQ
::
MsgTypes
::
BusinessReject
const
&
msg
)
638
:
Header_t
() {
639
underlying_fix_data_buffer
::
iterator
data
=
set_sequence_num
<
MsgTypes
::
BusinessMessageReject
>(
msg
);
640
data
=
add_field_tag
<
FieldsFast
::
ClOrdID
>(
data
);
641
libjmmcg
::
memcpy_opt
(
msg
.
clientOrderID
(),
reinterpret_cast
<
MIT
::
common
::
ClientOrderID_t
&>(*
data
));
642
data
+=
msg
.
clientOrderID
().
size
()-1;
643
data
=
add_field_tag
<
FieldsFast
::
RefSeqNum
>(
data
);
644
const
int
i
=
convert
(
msg
.
sequenceNumber
,
data
,
this
->
data_
.
size
()-(
data
-
this
->
data_
.
begin
()));
645
assert(i>0);
646
data
+=
i
;
647
data
=
write_ExDest
(
MIT
::
TRQ
::
MsgTypes
::
MIC_code
,
data
);
648
data
=
write_TransactTime
(
data
);
649
// TODO
650
finalise_msg
(
data
);
651
}
652
653
654
} } } } }
655
656
#
endif
isimud
exchanges
conversions
mit_to_fix_conversions.hpp
Generated on Tue May 11 2021 17:25:46 for libjmmcg by
1.9.2