OnixS C++ CME MDP Conflated TCP Handler  1.3.1
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 Negotiate200::TemplateId:
62  {
63  processor(
64  typify
65  <Negotiate200>
66  (binary));
67 
68  return true;
69  }
70 
71  case NegotiationReject201::TemplateId:
72  {
73  processor(
74  typify
76  (binary));
77 
78  return true;
79  }
80 
81  case NegotiationResponse202::TemplateId:
82  {
83  processor(
84  typify
86  (binary));
87 
88  return true;
89  }
90 
91  case Terminate203::TemplateId:
92  {
93  processor(
94  typify
95  <Terminate203>
96  (binary));
97 
98  return true;
99  }
100 
101  case MarketDataRequest205::TemplateId:
102  {
103  processor(
104  typify
106  (binary));
107 
108  return true;
109  }
110 
111  case RequestAck206::TemplateId:
112  {
113  processor(
114  typify
115  <RequestAck206>
116  (binary));
117 
118  return true;
119  }
120 
121  case RequestReject207::TemplateId:
122  {
123  processor(
124  typify
126  (binary));
127 
128  return true;
129  }
130 
131  case SecurityListRequest208::TemplateId:
132  {
133  processor(
134  typify
136  (binary));
137 
138  return true;
139  }
140 
141  case SecurityStatusRequest209::TemplateId:
142  {
143  processor(
144  typify
146  (binary));
147 
148  return true;
149  }
150 
151  case SubscriberHeartbeat210::TemplateId:
152  {
153  processor(
154  typify
156  (binary));
157 
158  return true;
159  }
160 
161  default:
162  return false;
163  }
164 }
165 
Message typify(const SbeMessage &message)
Casts SBE-encoded message to a given type.
Definition: Typification.h:36
#define ONIXS_CONFLATEDTCP_MESSAGING_NAMESPACE_END
Definition: ABI.h:144
#define ONIXS_CONFLATEDTCP_PURE
Definition: Compiler.h:202
bool processTypified(const SbeMessage &binary, Processor &processor)
Casts given binary message according to template/type information and processes casted messages by gi...
Definition: Typification.h:39
#define ONIXS_CONFLATEDTCP_NODISCARD
Definition: Compiler.h:198
MessageTemplateId templateId() const noexcept
Definition: SbeMessage.h:1173
#define ONIXS_CONFLATEDTCP_MESSAGING_NAMESPACE_BEGIN
Definition: ABI.h:140