OnixS Eurex ETI Handler C++ library  9.11.0
API documentation
SessionListener.h
Go to the documentation of this file.
1 /*
2  * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3  *
4  * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5  * and international copyright treaties.
6  *
7  * Access to and use of the software is governed by the terms of the applicable ONIXS Software
8  * Services Agreement (the Agreement) and Customer end user license agreements granting
9  * a non-assignable, non-transferable and non-exclusive license to use the software
10  * for it's own data processing purposes under the terms defined in the Agreement.
11  *
12  * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13  * of this source code or associated reference material to any other location for further reproduction
14  * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15  *
16  * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17  * the terms of the Agreement is a violation of copyright law.
18  */
19 
20 #pragma once
21 
22 #include "OnixS/Eurex/Trading/Export.h"
25 
26 #include <cstddef>
27 
28 namespace OnixS {
29 namespace Eurex {
30 namespace Trading {
31 
32 /// Session Listener.
33 class ONIXS_EUREX_ETI_EXPORT SessionListener
34 {
35 public:
36  /// Implement this member to get notifications immediately before message sending.
37  ///
38  /// \note This callback is called just before writing message data to a socket
39  /// and immediately after throttling delay (if throttling is needed).
40  ///
41  /// \param msgSeqNum Message sequence number.
42  /// \param message Message.
43  virtual void onMessageSending(UInt32 msgSeqNum, const Message& message);
44 
45  /// Implement this member to get notifications as soon as bytes are received from the wire.
46  ///
47  /// \param bytes Bytes to be sent.
48  /// \param size Total number of bytes.
49  virtual void onReceivedBytes(const char* bytes, size_t size);
50 
51  /// Implement this member to get notifications about throttling settings.
52  ///
53  /// \param throttleTimeInterval Throttle time interval in number of milliseconds; applicable for transaction limit.
54  /// \param throttleNoMsgs Transaction limit per ThrottleTimeInterval.
55  /// \param throttleDisconnectLimit Disconnect limit - maximum number of sequential message rejects allowed by the Eurex ETI.
56  virtual void onThrottleSettingsChanged(UInt64 throttleTimeInterval, UInt32 throttleNoMsgs, UInt32 throttleDisconnectLimit);
57 
58  /// Implement this member to get notifications about throttling start.
59  ///
60  /// \param delayInMilliseconds Throttle delay in milliseconds.
61  virtual void onThrottleDelayStarted(UInt32 delayInMilliseconds);
62 
63  /// Implement this member to get notifications about throttling finish.
64  virtual void onThrottleDelayFinished();
65 
66 protected:
67  /// Disables public <b>delete</b> operator in the interface class.
68  virtual ~SessionListener();
69 };
70 
72 {
73 }
74 
75 inline void SessionListener::onReceivedBytes (const char*, size_t)
76 {
77 }
78 
80 {
81 }
82 
84 {
85 }
86 
88 {
89 }
90 
92 {
93 }
94 
95 }
96 }
97 }
unsigned long long UInt64
Definition: Defines.h:47
virtual void onMessageSending(UInt32 msgSeqNum, const Message &message)
Message base class.
Definition: Message.h:33
unsigned int UInt32
Definition: Defines.h:46
virtual void onThrottleDelayFinished()
Implement this member to get notifications about throttling finish.
virtual void onReceivedBytes(const char *bytes, size_t size)
virtual void onThrottleSettingsChanged(UInt64 throttleTimeInterval, UInt32 throttleNoMsgs, UInt32 throttleDisconnectLimit)
virtual void onThrottleDelayStarted(UInt32 delayInMilliseconds)
virtual ~SessionListener()
Disables public delete operator in the interface class.