OnixS C++ B3 BOE Binary Order Entry  1.2.0
API Documentation
Typification.h
Go to the documentation of this file.
1 // Copyright Onix Solutions Limited [OnixS]. All rights reserved.
2 //
3 // This software owned by Onix Solutions Limited [OnixS] and is
4 // protected by copyright law and international copyright treaties.
5 //
6 // Access to and use of the software is governed by the terms of the applicable
7 // OnixS Software Services Agreement (the Agreement) and Customer end user license
8 // agreements granting a non-assignable, non-transferable and non-exclusive license
9 // to use the software for it's own data processing purposes under the terms defined
10 // in the Agreement.
11 //
12 // Except as otherwise granted within the terms of the Agreement, copying or
13 // reproduction of any part of this source code or associated reference material
14 // to any other location for further reproduction or redistribution, and any
15 // amendments to this copyright notice, are expressly prohibited.
16 //
17 // Any reproduction or redistribution for sale or hiring of the Software not in
18 // accordance with the terms of the Agreement is a violation of copyright law.
19 //
20 
21 #pragma once
22 
24 
26 
27 /// Casts SBE-encoded message to a given type.
28 template
29  <
30  class Message
31  >
32 inline
35 Message
37  const SbeMessage& message)
38 {
39  return Message(message);
40 }
41 
42 /// Casts a given binary message according to template/type
43 /// information and processes the cast messages by a given processor.
44 ///
45 /// Returned value indicates whether message type was successfully
46 /// recognized and pushed to the processor for further processing. Unknown
47 /// messages aren't processed and thus false result is returned.
48 template
49 <
50  class Processor
51 >
52 inline
54 bool
56  SbeMessage binary,
57  const Processor& processor)
58 {
59  switch (binary.templateId())
60  {
61  case Negotiate1::TemplateId:
62  {
63  processor(
64  typify
65  <Negotiate1>
66  (binary));
67 
68  return true;
69  }
70 
71  case NegotiateResponse2::TemplateId:
72  {
73  processor(
74  typify
76  (binary));
77 
78  return true;
79  }
80 
81  case NegotiateReject3::TemplateId:
82  {
83  processor(
84  typify
86  (binary));
87 
88  return true;
89  }
90 
91  case Establish4::TemplateId:
92  {
93  processor(
94  typify
95  <Establish4>
96  (binary));
97 
98  return true;
99  }
100 
101  case EstablishAck5::TemplateId:
102  {
103  processor(
104  typify
105  <EstablishAck5>
106  (binary));
107 
108  return true;
109  }
110 
111  case EstablishReject6::TemplateId:
112  {
113  processor(
114  typify
116  (binary));
117 
118  return true;
119  }
120 
121  case Terminate7::TemplateId:
122  {
123  processor(
124  typify
125  <Terminate7>
126  (binary));
127 
128  return true;
129  }
130 
131  case NotApplied8::TemplateId:
132  {
133  processor(
134  typify
135  <NotApplied8>
136  (binary));
137 
138  return true;
139  }
140 
141  case Sequence9::TemplateId:
142  {
143  processor(
144  typify
145  <Sequence9>
146  (binary));
147 
148  return true;
149  }
150 
151  case RetransmitRequest12::TemplateId:
152  {
153  processor(
154  typify
156  (binary));
157 
158  return true;
159  }
160 
161  case Retransmission13::TemplateId:
162  {
163  processor(
164  typify
166  (binary));
167 
168  return true;
169  }
170 
171  case RetransmitReject14::TemplateId:
172  {
173  processor(
174  typify
176  (binary));
177 
178  return true;
179  }
180 
181  case SimpleNewOrder100::TemplateId:
182  {
183  processor(
184  typify
186  (binary));
187 
188  return true;
189  }
190 
191  case SimpleModifyOrder101::TemplateId:
192  {
193  processor(
194  typify
196  (binary));
197 
198  return true;
199  }
200 
201  case NewOrderSingle102::TemplateId:
202  {
203  processor(
204  typify
206  (binary));
207 
208  return true;
209  }
210 
211  case OrderCancelReplaceRequest104::TemplateId:
212  {
213  processor(
214  typify
216  (binary));
217 
218  return true;
219  }
220 
221  case OrderCancelRequest105::TemplateId:
222  {
223  processor(
224  typify
226  (binary));
227 
228  return true;
229  }
230 
231  case NewOrderCross106::TemplateId:
232  {
233  processor(
234  typify
236  (binary));
237 
238  return true;
239  }
240 
241  case ExecutionReportNew200::TemplateId:
242  {
243  processor(
244  typify
246  (binary));
247 
248  return true;
249  }
250 
251  case ExecutionReportModify201::TemplateId:
252  {
253  processor(
254  typify
256  (binary));
257 
258  return true;
259  }
260 
261  case ExecutionReportCancel202::TemplateId:
262  {
263  processor(
264  typify
266  (binary));
267 
268  return true;
269  }
270 
271  case ExecutionReportTrade203::TemplateId:
272  {
273  processor(
274  typify
276  (binary));
277 
278  return true;
279  }
280 
281  case ExecutionReportReject204::TemplateId:
282  {
283  processor(
284  typify
286  (binary));
287 
288  return true;
289  }
290 
291  case ExecutionReportForward205::TemplateId:
292  {
293  processor(
294  typify
296  (binary));
297 
298  return true;
299  }
300 
301  case BusinessMessageReject206::TemplateId:
302  {
303  processor(
304  typify
306  (binary));
307 
308  return true;
309  }
310 
311  case SecurityDefinitionRequest300::TemplateId:
312  {
313  processor(
314  typify
316  (binary));
317 
318  return true;
319  }
320 
321  case SecurityDefinitionResponse301::TemplateId:
322  {
323  processor(
324  typify
326  (binary));
327 
328  return true;
329  }
330 
331  case QuoteRequest401::TemplateId:
332  {
333  processor(
334  typify
336  (binary));
337 
338  return true;
339  }
340 
341  case QuoteStatusReport402::TemplateId:
342  {
343  processor(
344  typify
346  (binary));
347 
348  return true;
349  }
350 
351  case Quote403::TemplateId:
352  {
353  processor(
354  typify
355  <Quote403>
356  (binary));
357 
358  return true;
359  }
360 
361  case QuoteCancel404::TemplateId:
362  {
363  processor(
364  typify
366  (binary));
367 
368  return true;
369  }
370 
371  case QuoteRequestReject405::TemplateId:
372  {
373  processor(
374  typify
376  (binary));
377 
378  return true;
379  }
380 
381  case PositionMaintenanceCancelRequest501::TemplateId:
382  {
383  processor(
384  typify
386  (binary));
387 
388  return true;
389  }
390 
391  case PositionMaintenanceRequest502::TemplateId:
392  {
393  processor(
394  typify
396  (binary));
397 
398  return true;
399  }
400 
401  case PositionMaintenanceReport503::TemplateId:
402  {
403  processor(
404  typify
406  (binary));
407 
408  return true;
409  }
410 
411  case AllocationInstruction601::TemplateId:
412  {
413  processor(
414  typify
416  (binary));
417 
418  return true;
419  }
420 
421  case AllocationReport602::TemplateId:
422  {
423  processor(
424  typify
426  (binary));
427 
428  return true;
429  }
430 
431  case OrderMassActionRequest701::TemplateId:
432  {
433  processor(
434  typify
436  (binary));
437 
438  return true;
439  }
440 
441  case OrderMassActionReport702::TemplateId:
442  {
443  processor(
444  typify
446  (binary));
447 
448  return true;
449  }
450 
451  default:
452  return false;
453  }
454 }
455 
OrderCancelRequest message submits a deletion of an existing order by referencing the original client...
Definition: Messages.h:7732
NegotiateReject message is sent when B3 rejects a Negotiate message sent by the client.
Definition: Messages.h:932
#define ONIXS_B3_BOE_MESSAGING_NAMESPACE_END
Definition: ABI.h:144
OrderMassActionReport message is used to acknowledge an OrderMassActionRequest message.
Definition: Messages.h:25890
Sent by client system to replace an existing order.
Definition: Messages.h:6663
The client sends the Negotiate message to B3 to initiate a connection. Negotiate is the first message...
Definition: Messages.h:33
The SecurityDefinitionRequest message creates a User Defined Spread (UDS) instrument. User-Defined Spreads provide users of the electronic trading platform the ability to create strategies composed by their choice of leg instruments, leg ratio and leg side.
Definition: Messages.h:16671
Execution Report - Reject message notifies the reason a client request was not accepted by Matching E...
Definition: Messages.h:14052
Terminate message is sent to indicate that the sender is going to disconnect the TCP socket connectio...
Definition: Messages.h:2509
RetransmitReject message is sent when a RetransmitRequest message is rejected by B3. More details are described in the Message Specification Guidelines document.
Definition: Messages.h:3941
ExecutionReport - Cancel message is sent in response to Order Cancel Request as well as to report uns...
Definition: Messages.h:11657
Execution Report - New message is sent in response to a NewOrderSingle or SimpleNewOrder messages...
Definition: Messages.h:9246
Execution Report - Modify message is sent in response to OrderCancelReplaceRequest or SimpleModifyOrd...
Definition: Messages.h:10465
Quote message is used as the response to a QuoteRequest message, tradeable, and restricted tradeable ...
Definition: Messages.h:19625
MessageTemplateId templateId() const noexcept
Definition: SbeMessage.h:1209
The QuoteRequestReject message is used when a QuoteRequest is not accept by B3 due to missing or inco...
Definition: Messages.h:20922
The SimpleModifyOrder submits a simple modify request for basic parameters like price and quantity...
Definition: Messages.h:4928
SimpleNewOrder message submits a simple new order focused on sent only main parameters with low compl...
Definition: Messages.h:4232
BusinessMessageReject message can reject an application-level message which fulfills session level ru...
Definition: Messages.h:16229
#define ONIXS_B3_BOE_NODISCARD
Definition: Compiler.h:191
EstablishmentReject message is sent when an Establish message is rejected by B3 informing the reason ...
Definition: Messages.h:2148
The QuoteStatusReport message is to inform the current status of forward acceptance.
Definition: Messages.h:18655
The SecurityDefinitioresponse message is sent in response to an attempt to create a new security defi...
Definition: Messages.h:17232
The QuoteCancel message is used to cancel a previous QuoteRequest message.
Definition: Messages.h:20356
Execution Report – Trade/Trade Bust message is sent with order fills that were traded and processed ...
Definition: Messages.h:12819
#define ONIXS_B3_BOE_MESSAGING_NAMESPACE_BEGIN
Definition: ABI.h:140
NewOrderSingle message is used to enter an order in the system; the behavior of an order can be affec...
Definition: Messages.h:5695
After negotiation level is complete, the client must send an Establish message to start assigning seq...
Definition: Messages.h:1334
The NegotiationResponse message is sent when a Negotiate message from the client is accepted by B3...
Definition: Messages.h:590
RetransmitRequest message is used for client to recover missed messages.
Definition: Messages.h:3321
Retransmission message is sent when a RetransmitRequest message from the client is accepted by B3...
Definition: Messages.h:3633
Message typify(const SbeMessage &message)
Casts SBE-encoded message to a given type.
Definition: Typification.h:36
AllocationReport message is as response of AllocationInstruction message.
Definition: Messages.h:24748
PositionMaintenanceCancelRequest is a solicited cancel of PositionMaintenance message sent by client...
Definition: Messages.h:21964
PositionMaintenanceRequest message allows the position owner (holder) to submit requests which will a...
Definition: Messages.h:22384
Sequence message specifies the sequence number of the next business message both: Recoverable (B3 to ...
Definition: Messages.h:3073
Execution Report – Forward message is sent with order fills were traded and processed on Matching En...
Definition: Messages.h:15178
The NewOrderCross message submits a Cross on Order Entry gateway, a two-sided order submitted by a si...
Definition: Messages.h:8329
#define ONIXS_B3_BOE_PURE
Definition: Compiler.h:195
PositionMaintenanceReport message is sent owner of a position (holder) in response to a PositionMaint...
Definition: Messages.h:23001
OrderMassActionRequest is sent by the client system to cancel working orders that belongs to a define...
Definition: Messages.h:25346
AllocationInstruction message submits a request to allocate (fully or partially) a non-allocated trad...
Definition: Messages.h:24076
NotApplied message is sent when B3 detects messages that already been sent (concept of idempotence) o...
Definition: Messages.h:2807
The Quote Request message is used within the context of this Forward transaction in which two parties...
Definition: Messages.h:17703
The EstablishmentAck message is sent when an Establish message is accepted by B3. EstablishmentAck me...
Definition: Messages.h:1782
bool processTypified(SbeMessage binary, const Processor &processor)
Casts a given binary message according to template/type information and processes the cast messages b...
Definition: Typification.h:55