OnixS Eurex ETI Handler C++ library  9.22.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
13  * part of this source code or associated reference material to any other location for further
14  * reproduction or redistribution, and any amendments to this copyright notice, are expressly
15  * prohibited.
16  *
17  * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
18  * the terms of the Agreement is a violation of copyright law.
19  */
20 
21 #pragma once
22 
24 #include "OnixS/Eurex/Trading/Export.h"
26 
27 #include <cstddef>
28 
29 namespace OnixS { namespace Eurex { namespace Trading {
30 
31 /// Session Listener.
32 class ONIXS_EUREX_ETI_EXPORT SessionListener
33 {
34 public:
35  /// Implement this member to get notifications immediately before message sending.
36  ///
37  /// \note This callback is called just before writing message data to a socket
38  /// and immediately after throttling delay (if throttling is needed).
39  ///
40  /// \param msgSeqNum Message sequence number.
41  /// \param message Message.
42  virtual void onMessageSending(UInt32 msgSeqNum, const Message& message);
43 
44  /// Implement this member to get notifications as soon as bytes are received from the wire.
45  ///
46  /// \param bytes Bytes to be sent.
47  /// \param size Total number of bytes.
48  virtual void onReceivedBytes(const char* bytes, size_t size);
49 
50  /// Implement this member to get notifications about throttling settings.
51  ///
52  /// \param throttleTimeInterval Throttle time interval in number of milliseconds; applicable for
53  /// transaction limit. \param throttleNoMsgs Transaction limit per ThrottleTimeInterval. \param
54  /// throttleDisconnectLimit Disconnect limit - maximum number of sequential message rejects
55  /// allowed by the Eurex ETI.
56  virtual void
57  onThrottleSettingsChanged(UInt64 throttleTimeInterval, UInt32 throttleNoMsgs, UInt32 throttleDisconnectLimit);
58 
59  /// Implement this member to get notifications about throttling start.
60  ///
61  /// \param delayInMilliseconds Throttle delay in milliseconds.
62  virtual void onThrottleDelayStarted(UInt32 delayInMilliseconds);
63 
64  /// Implement this member to get notifications about throttling finish.
65  virtual void onThrottleDelayFinished();
66 
67 protected:
68  /// Disables public <b>delete</b> operator in the interface class.
69  virtual ~SessionListener();
70 };
71 
73 
74 inline void SessionListener::onReceivedBytes(const char*, size_t) {}
75 
77 
79 
81 
83 
84 }}}
unsigned long long UInt64
Definition: Defines.h:46
virtual void onMessageSending(UInt32 msgSeqNum, const Message &message)
Message base class.
Definition: Message.h:32
unsigned int UInt32
Definition: Defines.h:45
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.