OnixS C++ CME Market Data Handler  5.4.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 
23 #include <OnixS/CME/MDH/Messages.h>
24 
26 
27 /// Casts SBE-encoded message to given type.
28 template
29 <
30  class Message
31 >
32 inline
33 Message
35  const
36  BinaryMessage& message)
37 {
38  return
39  Message(
40  message.encoded(),
41  message.encodedLength());
42 }
43 
44 /// Casts given binary message according to template/type
45 /// information and processes casted messages by given processor.
46 ///
47 /// Returned value indicates whether message type was successfully
48 /// recognized and pushed to processor for further processing. Unknown
49 /// messages aren't processed and thus false result is returned.
50 template
51 <
52  class Processor
53 >
54 bool
56  const BinaryMessage& binary,
57  Processor& processor)
58 {
59  switch (binary.templateId())
60  {
61  case InstrumentDefinitionFixedIncome57::TemplateId:
62  {
63  processor(
64  typify
66  (binary));
67 
68  return true;
69  }
70 
71  case ChannelReset4::TemplateId:
72  {
73  processor(
74  typify
76  (binary));
77 
78  return true;
79  }
80 
81  case AdminHeartbeat12::TemplateId:
82  {
83  processor(
84  typify
86  (binary));
87 
88  return true;
89  }
90 
91  case AdminLogin15::TemplateId:
92  {
93  processor(
94  typify
95  <AdminLogin15>
96  (binary));
97 
98  return true;
99  }
100 
101  case AdminLogout16::TemplateId:
102  {
103  processor(
104  typify
105  <AdminLogout16>
106  (binary));
107 
108  return true;
109  }
110 
111  case InstrumentDefinitionFuture54::TemplateId:
112  {
113  processor(
114  typify
116  (binary));
117 
118  return true;
119  }
120 
121  case InstrumentDefinitionSpread56::TemplateId:
122  {
123  processor(
124  typify
126  (binary));
127 
128  return true;
129  }
130 
131  case SecurityStatus30::TemplateId:
132  {
133  processor(
134  typify
136  (binary));
137 
138  return true;
139  }
140 
141  case IncrementalRefreshBook46::TemplateId:
142  {
143  processor(
144  typify
146  (binary));
147 
148  return true;
149  }
150 
151  case IncrementalRefreshDailyStatistics49::TemplateId:
152  {
153  processor(
154  typify
156  (binary));
157 
158  return true;
159  }
160 
161  case IncrementalRefreshLimitsBanding50::TemplateId:
162  {
163  processor(
164  typify
166  (binary));
167 
168  return true;
169  }
170 
171  case IncrementalRefreshSessionStatistics51::TemplateId:
172  {
173  processor(
174  typify
176  (binary));
177 
178  return true;
179  }
180 
181  case IncrementalRefreshVolume37::TemplateId:
182  {
183  processor(
184  typify
186  (binary));
187 
188  return true;
189  }
190 
191  case SnapshotFullRefresh52::TemplateId:
192  {
193  processor(
194  typify
196  (binary));
197 
198  return true;
199  }
200 
201  case QuoteRequest39::TemplateId:
202  {
203  processor(
204  typify
206  (binary));
207 
208  return true;
209  }
210 
211  case InstrumentDefinitionOption55::TemplateId:
212  {
213  processor(
214  typify
216  (binary));
217 
218  return true;
219  }
220 
221  case IncrementalRefreshTradeSummary48::TemplateId:
222  {
223  processor(
224  typify
226  (binary));
227 
228  return true;
229  }
230 
231  case IncrementalRefreshOrderBook47::TemplateId:
232  {
233  processor(
234  typify
236  (binary));
237 
238  return true;
239  }
240 
241  case SnapshotFullRefreshOrderBook53::TemplateId:
242  {
243  processor(
244  typify
246  (binary));
247 
248  return true;
249  }
250 
251  case AdminLogin408::TemplateId:
252  {
253  processor(
254  typify
255  <AdminLogin408>
256  (binary));
257 
258  return true;
259  }
260 
261  case AdminLogout409::TemplateId:
262  {
263  processor(
264  typify
266  (binary));
267 
268  return true;
269  }
270 
271  case AdminHeartbeat410::TemplateId:
272  {
273  processor(
274  typify
276  (binary));
277 
278  return true;
279  }
280 
281  default:
282  return false;
283  }
284 }
285 
MDIncrementalRefreshSessionStatistics.
Definition: Messages.h:4072
SnapshotFullRefreshOrderBook.
Definition: Messages.h:6381
MDIncrementalRefreshBook.
Definition: Messages.h:3354
Message typify(const BinaryMessage &message)
Casts SBE-encoded message to given type.
Definition: Typification.h:34
MDIncrementalRefreshDailyStatistics.
Definition: Messages.h:3677
MDIncrementalRefreshOrderBook.
Definition: Messages.h:6189
MessageTemplateId templateId() const
Template identifier of message being referenced.
MDInstrumentDefinitionSpread.
Definition: Messages.h:2283
#define ONIXS_CMEMDH_NAMESPACE_BEGIN
Definition: Bootstrap.h:152
MDIncrementalRefreshTradeSummary.
Definition: Messages.h:5905
bool processTypified(const BinaryMessage &binary, Processor &processor)
Definition: Typification.h:55
Encapsulates services for manipulating SBE-encoded messages.
EncodedLength encodedLength() const
Size of SBE-encoded message.
MDIncrementalRefreshVolume.
Definition: Messages.h:4262
MDInstrumentDefinitionFuture.
Definition: Messages.h:1437
const void * encoded() const
SBE-encoded message content.
MDInstrumentDefinitionOption.
Definition: Messages.h:4919
MDInstrumentDefinitionFixedIncome.
Definition: Messages.h:32
MDIncrementalRefreshLimitsBanding.
Definition: Messages.h:3885
#define ONIXS_CMEMDH_NAMESPACE_END
Definition: Bootstrap.h:156