OnixS ICE iMpact Multicast Price Feed Handler C++ library  8.15.1
API documentation
ExchangeListener.h
Go to the documentation of this file.
1 /**
2  * \file
3  * \brief Class `OnixS::ICE::iMpact::MarketData::ExchangeListener` (interface)
4  */
5 /*
6  * Copyright (c) Onix Solutions Limited. All rights reserved.
7  *
8  * This software owned by Onix Solutions Limited and is protected by copyright law
9  * and international copyright treaties.
10  *
11  * Access to and use of the software is governed by the terms of the applicable ONIXS Software
12  * Services Agreement (the Agreement) and Customer end user license agreements granting
13  * a non-assignable, non-transferable and non-exclusive license to use the software
14  * for it's own data processing purposes under the terms defined in the Agreement.
15  *
16  * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
17  * of this source code or associated reference material to any other location for further reproduction
18  * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
19  *
20  * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
21  * the terms of the Agreement is a violation of copyright law.
22  */
23 
24 #pragma once
25 
26 #include "Export.h"
27 #include "MessageInfo.h"
28 #include "MessagesFwd.h"
29 
30 
31 namespace OnixS { namespace ICE { namespace iMpact { namespace MarketData {
32 
33 /// \brief Defines an interface through which the Handler
34 /// notifies subscribers about all received messages.
35 class ONIXS_ICEMDH_EXPORT ExchangeListener
36 {
37 public:
38  virtual ~ExchangeListener() {}
39 
40  /// \name User callback's
41 
42  //@{
43 
44  /// \brief Implement this member to get notified about Add/Modify Order Message.
45  ///
46  /// Default implementation do nothing.
47  ///
48  /// \param msg is a \c AddModifyOrder message structure.
49  /// \param msgInfo information about this particular message.
50  virtual void onAddModifyOrder(const AddModifyOrder& msg, const MessageInfo& msgInfo);
51 
52  /// \brief Implement this member to get notified about Add Price Level Message.
53  ///
54  /// Default implementation do nothing.
55  ///
56  /// \param msg is a \c AddPriceLevel message structure.
57  /// \param msgInfo information about this particular message.
58  virtual void onAddPriceLevel(const AddPriceLevel& msg, const MessageInfo& msgInfo);
59 
60  /// \brief Implement this member to get notified about Message Bundle Marker.
61  ///
62  /// Default implementation do nothing.
63  ///
64  /// \param msg is a \c BundleMarker message structure.
65  /// \param msgInfo information about this particular message.
66  virtual void onBundleMarker(const BundleMarker& msg, const MessageInfo& msgInfo);
67 
68  /// \brief Implement this member to get notified about Cancelled Trade Message.
69  ///
70  /// Default implementation do nothing.
71  ///
72  /// \param msg is a \c CancelledTrade message structure.
73  /// \param msgInfo information about this particular message.
74  virtual void onCancelledTrade(const CancelledTrade& msg, const MessageInfo& msgInfo);
75 
76  /// \brief Implement this member to get notified about Change Price Level Message.
77  ///
78  /// Default implementation do nothing.
79  ///
80  /// \param msg is a \c ChangePriceLevel message structure.
81  /// \param msgInfo information about this particular message.
82  virtual void onChangePriceLevel(const ChangePriceLevel& msg, const MessageInfo& msgInfo);
83 
84  /// \brief Implement this member to get notified about Close Price Message.
85  ///
86  /// Default implementation do nothing.
87  ///
88  /// \param msg is a \c ClosePrice message structure.
89  /// \param msgInfo information about this particular message.
90  virtual void onClosePrice(const ClosePrice& msg, const MessageInfo& msgInfo);
91 
92  /// \brief Implement this member to get notified about Delete Order Message.
93  ///
94  /// Default implementation do nothing.
95  ///
96  /// \param msg is a \c DeleteOrder message structure.
97  /// \param msgInfo information about this particular message.
98  virtual void onDeleteOrder(const DeleteOrder& msg, const MessageInfo& msgInfo);
99 
100  /// \brief Implement this member to get notified about Delete Price Level Message.
101  ///
102  /// Default implementation do nothing.
103  ///
104  /// \param msg is a \c DeletePriceLevel message structure.
105  /// \param msgInfo information about this particular message.
106  virtual void onDeletePriceLevel(const DeletePriceLevel& msg, const MessageInfo& msgInfo);
107 
108  /// \brief Implement this member to get notified about End of Day Market Summary Message.
109  ///
110  /// Default implementation do nothing.
111  ///
112  /// \param msg is a \c EndOfDayMarketSummary message structure.
113  /// \param msgInfo information about this particular message.
114  virtual void onEndOfDayMarketSummary(const EndOfDayMarketSummary& msg, const MessageInfo& msgInfo);
115 
116  /// \brief Implement this member to get notified about Fixing Indicative Price Message.
117  ///
118  /// Default implementation do nothing.
119  ///
120  /// \param msg is a \c FixingIndicativePrice message structure.
121  /// \param msgInfo information about this particular message.
122  virtual void onFixingIndicativePrice(const FixingIndicativePrice& msg, const MessageInfo& msgInfo);
123 
124  /// \brief Implement this member to get notified about Fixing Lockdown Message.
125  ///
126  /// Default implementation do nothing.
127  ///
128  /// \param msg is a \c FixingLockdown message structure.
129  /// \param msgInfo information about this particular message.
130  virtual void onFixingLockdown(const FixingLockdown& msg, const MessageInfo& msgInfo);
131 
132  /// \brief Implement this member to get notified about Fixing Transition Message.
133  ///
134  /// Default implementation do nothing.
135  ///
136  /// \param msg is a \c FixingTransition message structure.
137  /// \param msgInfo information about this particular message.
138  virtual void onFixingTransition(const FixingTransition& msg, const MessageInfo& msgInfo);
139 
140  /// \brief Implement this member to get notified about Futures/OTC Product Definition Response Message.
141  ///
142  /// Default implementation do nothing.
143  ///
144  /// \param msg is a \c FuturesProductDefinition message structure.
145  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
146  /// \note By default all products marked as \e interested to user.
147  virtual void onFuturesProductDefinition(const FuturesProductDefinition& msg, bool& isInterested);
148 
149  /// \brief Implement this member to get notified about Futures Strategy Definition Response Message.
150  ///
151  /// Default implementation do nothing.
152  ///
153  /// \param msg is a \c FuturesStrategyDefinition message structure.
154  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
155  /// \note By default all products marked as \e interested to user.
156  virtual void onFuturesStrategyDefinition(const FuturesStrategyDefinition& msg, bool& isInterested);
157 
158  /// \brief Implement this member to get notified about Interval Price Limit Notification Message.
159  ///
160  /// Default implementation do nothing.
161  ///
162  /// \param msg is a \c IntervalPriceLimitNotification message structure.
163  /// \param msgInfo information about this particular message.
164  virtual void onIntervalPriceLimitNotification(const IntervalPriceLimitNotification& msg, const MessageInfo& msgInfo);
165 
166  /// \brief Implement this member to get notified about Investigated Trade Message.
167  ///
168  /// Default implementation do nothing.
169  ///
170  /// \param msg is a \c InvestigatedTrade message structure.
171  /// \param msgInfo information about this particular message.
172  virtual void onInvestigatedTrade(const InvestigatedTrade& msg, const MessageInfo& msgInfo);
173 
174  /// \brief Implement this member to get notified about Login Response Message.
175  ///
176  /// Default implementation do nothing.
177  ///
178  /// \param msg is a \c LoginResponse message structure.
179  virtual void onLoginResponse(const LoginResponse& msg);
180 
181  /// \brief Implement this member to get notified about Marker/Index Prices Message.
182  ///
183  /// Default implementation do nothing.
184  ///
185  /// \param msg is a \c MarkerIndexPrices message structure.
186  /// \param msgInfo information about this particular message.
187  virtual void onMarkerIndexPrices(const MarkerIndexPrices& msg, const MessageInfo& msgInfo);
188 
189  /// \brief Implement this member to get notified about Market Event Message.
190  ///
191  /// Default implementation do nothing.
192  ///
193  /// \param msg is a \c MarketEvent message structure.
194  /// \param msgInfo information about this particular message.
195  virtual void onMarketEvent(const MarketEvent& msg, const MessageInfo& msgInfo);
196 
197  /// \brief Implement this member to get notified about Market Snapshot Message.
198  ///
199  /// Default implementation do nothing.
200  ///
201  /// \param msg is a \c MarketSnapshot message structure.
202  /// \param msgInfo information about this particular message.
203  virtual void onMarketSnapshot(const MarketSnapshot& msg, const MessageInfo& msgInfo);
204 
205  /// \brief Implement this member to get notified about Market Snapshot Order Message.
206  ///
207  /// Default implementation do nothing.
208  ///
209  /// \param msg is a \c MarketSnapshotOrder message structure.
210  /// \param msgInfo information about this particular message.
211  virtual void onMarketSnapshotOrder(const MarketSnapshotOrder& msg, const MessageInfo& msgInfo);
212 
213  /// \brief Implement this member to get notified about Market Snapshot Price Level Message.
214  ///
215  /// Default implementation do nothing.
216  ///
217  /// \param msg is a \c MarketSnapshotPriceLevel message structure.
218  /// \param msgInfo information about this particular message.
219  virtual void onMarketSnapshotPriceLevel(const MarketSnapshotPriceLevel& msg, const MessageInfo& msgInfo);
220 
221  /// \brief Implement this member to get notified about Market State Change Message.
222  ///
223  /// Default implementation do nothing.
224  ///
225  /// \param msg is a \c MarketStateChange message structure.
226  /// \param msgInfo information about this particular message.
227  virtual void onMarketStateChange(const MarketStateChange& msg, const MessageInfo& msgInfo);
228 
229  /// \brief Implement this member to get notified about Market Statistics Message.
230  ///
231  /// Default implementation do nothing.
232  ///
233  /// \param msg is a \c MarketStatistics message structure.
234  /// \param msgInfo information about this particular message.
235  virtual void onMarketStatistics(const MarketStatistics& msg, const MessageInfo& msgInfo);
236 
237  /// \brief Implement this member to get notified about New Expiry Message.
238  ///
239  /// Default implementation do nothing.
240  ///
241  /// \param msg is a \c NewExpiry message structure.
242  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
243  /// \note By default all products marked as \e interested to user.
244  /// \param msgInfo information about this particular message.
245  virtual void onNewExpiry(const NewExpiry& msg, bool& isInterested, const MessageInfo& msgInfo);
246 
247  /// \brief Implement this member to get notified about New Futures Strategy Definition Message.
248  ///
249  /// Default implementation do nothing.
250  ///
251  /// \param msg is a \c NewFuturesStrategyDefinition message structure.
252  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
253  /// \note By default all products marked as \e interested to user.
254  /// \param msgInfo information about this particular message.
255  virtual void onNewFuturesStrategyDefinition(const NewFuturesStrategyDefinition& msg, bool& isInterested, const MessageInfo& msgInfo);
256 
257  /// \brief Implement this member to get notified about New Options Market Definition Message.
258  ///
259  /// Default implementation do nothing.
260  ///
261  /// \param msg is a \c NewOptionsMarketDefinition message structure.
262  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
263  /// \note By default all products marked as \e interested to user.
264  /// \param msgInfo information about this particular message.
265  virtual void onNewOptionsMarketDefinition(const NewOptionsMarketDefinition& msg, bool& isInterested, const MessageInfo& msgInfo);
266 
267  /// \brief Implement this member to get notified about New Options Strategy Definition Message.
268  ///
269  /// Default implementation do nothing.
270  ///
271  /// \param msg is a \c NewOptionsStrategyDefinition message structure.
272  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
273  /// \note By default all products marked as \e interested to user.
274  /// \param msgInfo information about this particular message.
275  virtual void onNewOptionsStrategyDefinition(const NewOptionsStrategyDefinition& msg, bool& isInterested, const MessageInfo& msgInfo);
276 
277  /// \brief Implement this member to get notified about Old Style Options Trade and Market Stats Message.
278  ///
279  /// Default implementation do nothing.
280  ///
281  /// \param msg is a \c OldStyleOptionsTradeAndMarketStats message structure.
282  /// \param msgInfo information about this particular message.
283  virtual void onOldStyleOptionsTradeAndMarketStats(const OldStyleOptionsTradeAndMarketStats& msg, const MessageInfo& msgInfo);
284 
285  /// \brief Implement this member to get notified about Open Interest Message.
286  ///
287  /// Default implementation do nothing.
288  ///
289  /// \param msg is a \c OpenInterest message structure.
290  /// \param msgInfo information about this particular message.
291  virtual void onOpenInterest(const OpenInterest& msg, const MessageInfo& msgInfo);
292 
293  /// \brief Implement this member to get notified about Open Price Message.
294  ///
295  /// Default implementation do nothing.
296  ///
297  /// \param msg is a \c OpenPrice message structure.
298  /// \param msgInfo information about this particular message.
299  virtual void onOpenPrice(const OpenPrice& msg, const MessageInfo& msgInfo);
300 
301  /// \brief Implement this member to get notified about Option Open Interest Message.
302  ///
303  /// Default implementation do nothing.
304  ///
305  /// \param msg is a \c OptionOpenInterest message structure.
306  /// \param msgInfo information about this particular message.
307  virtual void onOptionOpenInterest(const OptionOpenInterest& msg, const MessageInfo& msgInfo);
308 
309  /// \brief Implement this member to get notified about Option Settlement Price Message.
310  ///
311  /// Default implementation do nothing.
312  ///
313  /// \param msg is a \c OptionSettlementPrice message structure.
314  /// \param msgInfo information about this particular message.
315  virtual void onOptionSettlementPrice(const OptionSettlementPrice& msg, const MessageInfo& msgInfo);
316 
317  /// \brief Implement this member to get notified about Options Product Definition Message.
318  ///
319  /// Default implementation do nothing.
320  ///
321  /// \param msg is a \c OptionsProductDefinition message structure.
322  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
323  /// \note By default all products marked as \e interested to user.
324  virtual void onOptionsProductDefinition(const OptionsProductDefinition& msg, bool& isInterested);
325 
326  /// \brief Implement this member to get notified about Options Strategy Definition Message.
327  ///
328  /// Default implementation do nothing.
329  ///
330  /// \param msg is a \c OptionsStrategyDefinition message structure.
331  /// \param isInterested is a flag allows the caller to specify that the product is interested to user.
332  /// \note By default all products marked as \e interested to user.
333  virtual void onOptionsStrategyDefinition(const OptionsStrategyDefinition& msg, bool& isInterested);
334 
335  /// \brief Implement this member to get notified about Pre-Open Price Indicator Message.
336  ///
337  /// Default implementation do nothing.
338  ///
339  /// \param msg is a \c PreOpenPriceIndicator message structure.
340  /// \param msgInfo information about this particular message.
341  virtual void onPreOpenPriceIndicator(const PreOpenPriceIndicator& msg, const MessageInfo& msgInfo);
342 
343  /// \brief Implement this member to get notified about RFQ Message.
344  ///
345  /// Default implementation do nothing.
346  ///
347  /// \param msg is a \c Rfq message structure.
348  /// \param msgInfo information about this particular message.
349  virtual void onRfq(const Rfq& msg, const MessageInfo& msgInfo);
350 
351  /// \brief Implement this member to get notified about Settlement Price Message.
352  ///
353  /// Default implementation do nothing.
354  ///
355  /// \param msg is a \c SettlementPrice message structure.
356  /// \param msgInfo information about this particular message.
357  virtual void onSettlementPrice(const SettlementPrice& msg, const MessageInfo& msgInfo);
358 
359  /// \brief Implement this member to get notified about Special Field Message.
360  ///
361  /// Default implementation do nothing.
362  ///
363  /// \param msg is a \c SpecialField message structure.
364  /// \param msgInfo information about this particular message.
365  virtual void onSpecialField(const SpecialField& msg, const MessageInfo& msgInfo);
366 
367  /// \brief Implement this member to get notified about Spot Market Trade Message.
368  ///
369  /// Default implementation do nothing.
370  ///
371  /// \param msg is a \c SpotMarketTrade message structure.
372  /// \param msgInfo information about this particular message.
373  virtual void onSpotMarketTrade(const SpotMarketTrade& msg, const MessageInfo& msgInfo);
374 
375  /// \brief Implement this member to get notified about Strip Info Message.
376  ///
377  /// Default implementation do nothing.
378  ///
379  /// \param msg is a \c StripInfo message structure.
380  virtual void onStripInfo(const StripInfo& msg);
381 
382  /// \brief Implement this member to get notified about System Text Message.
383  ///
384  /// Default implementation do nothing.
385  ///
386  /// \param msg is a \c SystemText message structure.
387  /// \param msgInfo information about this particular message.
388  virtual void onSystemText(const SystemText& msg, const MessageInfo& msgInfo);
389 
390  /// \brief Implement this member to get notified about Trade Message.
391  ///
392  /// Default implementation do nothing.
393  ///
394  /// \param msg is a \c Trade message structure.
395  /// \param msgInfo information about this particular message.
396  virtual void onTrade(const Trade& msg, const MessageInfo& msgInfo);
397 
398  //@}
399 };
400 
401 }}}} // namespace MarketData, iMpact, ICE, OnixS
Defines an interface through which the Handler notifies subscribers about all received messages...
This class represents the Interval Price Limit Notification Message.
This class represents the Add/Modify Order Message.
This class represents the Open Price Message.
Definition: OpenPrice.h:35
This class represents the Options Product Definition Message.
This class represents the Fixing Transition Message.
This class represents the Market Snapshot Message.
This class represents the Market Event Message.
Definition: MarketEvent.h:36
This class represents the System Text Message.
Definition: SystemText.h:35
This class represents the Market Snapshot Order Message.
This class represents the Delete Price Level Message.
This class represents the Trade Message.
Definition: Trade.h:36
This class represents the Delete Order Message.
Definition: DeleteOrder.h:35
This class represents the Change Price Level Message.
This class represents the Spot Market Trade Message.
This class represents the New Expiry Message.
Definition: NewExpiry.h:36
This class represents the Open Interest Message.
Definition: OpenInterest.h:35
This class represents the Marker/Index Prices Message.
This class represents the Message Bundle Marker.
Definition: BundleMarker.h:36
This class represents the Market Statistics Message.
This class represents the Settlement Price Message.
This class represents the Pre-Open Price Indicator Message.
This class represents the Strip Info Message.
Definition: StripInfo.h:35
This class represents the Fixing Lockdown Message.
This class represents the Fixing Indicative Price Message.
This class represents the Market State Change Message.
This class represents the Futures/OTC Product Definition Response Message.
This class represents the Option Open Interest Message.
This class represents the Old Style Options Trade and Market Stats Message.
This class represents the New Options Market Definition Message.
This class represents the Options Strategy Definition Message.
This class represents the Add Price Level Message.
Definition: AddPriceLevel.h:36
This class represents the Futures Strategy Definition Response Message.
This class represents the New Options Strategy Definition Message.
This class represents the Close Price Message.
Definition: ClosePrice.h:35
This class represents the Login Response Message.
Definition: LoginResponse.h:36
This class represents the Special Field Message.
Definition: SpecialField.h:36
Forward declarations of all ICE iMpact messages.
This class represents the New Futures Strategy Definition Message.
This class represents the Cancelled Trade Message.
This class represents the Market Snapshot Price Level Message.
This class represents the End of Day Market Summary Message.
This class represents the Option Settlement Price Message.
This class represents the RFQ Message.
Definition: Rfq.h:36
This class represents the Investigated Trade Message.