Skip to content

Commit 0668d57

Browse files
committed
Merge branch 'release'
2 parents d6470ae + 0b0af02 commit 0668d57

File tree

179 files changed

+10057
-1075
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+10057
-1075
lines changed

CMake/rtsdkInfo.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ unset(rtsdk_DEPENDS_LIST)
1313
set(rtsdk_INTERNAL_API_VERSION_MAJOR 3)
1414
set(rtsdk_INTERNAL_API_VERSION_MINOR 6)
1515
set(rtsdk_INTERNAL_API_VERSION_PATCH 1)
16-
set(rtsdk_INTERNAL_API_VERSION_TWEAK 1)
17-
set(rtsdk_INTERNAL_RELEASE_TWEAK L2)
16+
set(rtsdk_INTERNAL_API_VERSION_TWEAK 2)
17+
set(rtsdk_INTERNAL_RELEASE_TWEAK G1)
1818
set(rtsdk_RELEASE_TYPE rrg)
1919

2020
set( librssl_SO_VERSION 14 )

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cmake_minimum_required (VERSION 3.10.3)
77
# guarantee of a successful build if changed.
88

99
project (rtsdk
10-
VERSION 2.0.1.1
10+
VERSION 2.0.1.2
1111
LANGUAGES C CXX)
1212

1313
set(rtsdk_CMAKE_DIR "${rtsdk_SOURCE_DIR}/CMake")

Cpp-C/CHANGELOG.md

+45-6
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,65 @@ There are three types of RTSDK releases that append a letter directly followed b
99
"E" releases (E-Loads) are emergency RTSDK releases that are uploaded to MyRefinitiv and Developer Community but not to GitHub. Also note that emergency releases may only be partial (i.e., Java or C++/C only).
1010

1111
----------------------------------------------------------------------------------------
12-
CURRENT RELEASE HIGHLIGHTS - RTSDK C/CPP 2.0.1.L2 aka EMA 3.6.1.L2 and ETA 3.6.1.L2
12+
CURRENT RELEASE HIGHLIGHTS - RTSDK C/CPP 2.0.1.G1 aka EMA 3.6.1.G1 and ETA 3.6.1.G1
1313
----------------------------------------------------------------------------------------
1414

15-
This release removes unused files from GitHub and RRG packages
15+
This is a maintenace release with fixes for customer issues
16+
17+
Customer Issues Resolved
18+
------------------
19+
- [Case Number: 09514087] - [RTSDK-4606] - ETA crash when a websocket client does not specify sub protocol and closes the connection
20+
- [GitHub #138] - [RTSDK-3884] - EMA C++: Destructor of OmmConsumer occasionally hangs forever in deadlock
21+
- [GitHub #152] - [RTSDK-4291] - OmmConsumerImpl::registerClient implementation doesn't unlock mutex when exception is thrown
22+
- [GitHub #161] - [RTSDK-4371] - ETA compilation warning
23+
- [GitHub #164] - [RTSDK-4589] - In VAConsumer refresh message is received the channel is closed if the streamState is not open
24+
- [GitHub #168] - [RTSDK-4706] - EMA C++: configuration parameters ConnectionPingTimeout / ConnectionMinPingTimeout are applied as number of seconds, not milliseconds
25+
- [GitHub #170] - [RTSDK-4941] - Buggy code in rsslRDMDictionaryMsg.c
26+
- [GitHub #171] - [RTSDK-4957] - EMA WebSocket example default port in EmaConfig.xml
27+
- [GitHub #172] - [RTSDK-4951] - EMA C++ Websocket example mismatch between Readme and source code
1628

1729
----------------------------------------------------------------------------------------
1830
FULL CHANGELOG
1931
----------------------------------------------------------------------------------------
2032

2133
--------------------------------------------
22-
RTSDK C++/C Release 2.0.1.L2 (March 31, 2021)
34+
RTSDK C++/C Release 2.0.1.G1 (Apr 21, 2021)
35+
--------------------------------------------
36+
37+
EMA C++ 3.6.1.G1 Issues Resolved
38+
--------------------------------
39+
- [RTSDK-3884] - EMA C++: Destructor of OmmConsumer occasionally hangs forever in deadlock - [GitHub #138]
40+
- [RTSDK-4291] - OmmConsumerImpl::registerClient implementation doesn't unlock mutex when exception is thrown - [GitHub #152]
41+
- [RTSDK-4706] - EMA C++: configuration parameters ConnectionPingTimeout / ConnectionMinPingTimeout are applied as number of seconds, not milliseconds - [GitHub #168]
42+
- [RTSDK-4719] - Support encryption connection type for EMAC consumer performance tool
43+
- [RTSDK-4951] - EMA C++ Websocket example mismatch between Readme and source code - [GitHub #172]
44+
- [RTSDK-4957] - EMA WebSocket example default port in EmaConfig.xml - [GitHub #171]
45+
- [RTSDK-4954] - Correction to IProvider180 README file
46+
47+
ETA C 3.6.1.G1 Issues Resolved
48+
--------------------------------
49+
- [RTSDK-4371] - ETA compilation warning - [GitHub #161]
50+
- [RTSDK-4382] - Change RDP 'scope' default value to trapi.streaming.pricing.read
51+
- [RTSDK-4508] - JSON converter library fails to conform to UTF-8 when passing the JSON dictionary message over the network
52+
- [RTSDK-4606] - TRCERouter Crash in ETA - [Case Number: 09514087]
53+
- [RTSDK-4713] - ETAC: Websocket Transport should handle Sec-Websocket-Extensions with unsupported parameter: client_max_window_bits
54+
- [RTSDK-4727] - rsslNumericStringToReal does not return error with an input like 1151194421449.10009766
55+
- [RTSDK-4589] - In VAConsumer refresh message is received the channel is closed if the streamState is not open - [GitHub #164]
56+
- [RTSDK-4941] - Buggy code in rsslRDMDictionaryMsg.c - [GitHub #170]
57+
58+
59+
--------------------------------------------
60+
RTSDK C++/C Release 2.0.1.L2 (Mar 31, 2021)
2361
--------------------------------------------
2462

2563
Both ETA C and EMA C++ 3.6.1.L2 Issues Resolved
26-
---------------------------------------------------
64+
-----------------------------------------------
2765
- [RTSDK-4860, RTSDK-4861] - Remove unused EtaJni files
2866

67+
2968
--------------------------------------------
3069
RTSDK C++/C Release 2.0.1.L1 (Mar 4, 2021)
31-
---------------------------------------------
70+
--------------------------------------------
3271

3372
EMA C++ 3.6.1.L1 Issues Resolved
3473
--------------------------------
@@ -59,7 +98,7 @@ Both ETA C and EMA C++ 3.6.1.L1 Issues Resolved
5998

6099
--------------------------------------------
61100
RTSDK C++/C Release 2.0.0.L1 (Oct 19, 2020)
62-
---------------------------------------------
101+
--------------------------------------------
63102

64103
New Features Added
65104
------------------

Cpp-C/Ema/EmaConfig.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@
372372
<CompressionType value="CompressionType::None"/>
373373
<GuaranteedOutputBuffers value="5000"/>
374374
<Host value="localhost"/>
375-
<Port value="14002"/>
375+
<Port value="15000"/>
376376
<WsMaxMsgSize value="61440"/>
377377
<WsProtocols value="rssl.json.v2, rssl.rwf, tr_json2"/>
378378
</Channel>
@@ -490,7 +490,7 @@
490490
<GuaranteedOutputBuffers value="5000"/>
491491
<ConnectionPingTimeout value="30000"/>
492492
<TcpNodelay value="1"/>
493-
<Port value="14002"/>
493+
<Port value="15000"/>
494494
<MaxFragmentSize value="6144"/>
495495
<WsProtocols value="rssl.json.v2, rssl.rwf, tr_json2"/>
496496
</Server>

Cpp-C/Ema/Examples/PerfTools/Common/AppUtil.cpp

+22
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "AppUtil.h"
99
#include "CtrlBreakHandler.h"
10+
#include "GetTime.h"
1011
#include "Mutex.h"
1112

1213
#include <stdlib.h>
@@ -174,6 +175,27 @@ void AppUtil::sleep(UInt64 millisecs)
174175
#endif
175176
}
176177

178+
void AppUtil::sleepUI(UInt64 millisecs, UInt64 millisecsQuantum)
179+
{
180+
PerfTimeValue startTime = perftool::common::GetTime::getTimeMilli();
181+
PerfTimeValue currentTime = startTime;
182+
PerfTimeValue endTime = startTime + millisecs;
183+
bool lastSleep = false;
184+
185+
while (!lastSleep && currentTime <= endTime && !CtrlBreakHandler::isTerminated())
186+
{
187+
if (currentTime + millisecsQuantum > endTime)
188+
{
189+
millisecsQuantum = endTime - currentTime;
190+
lastSleep = true;
191+
}
192+
193+
sleep(millisecsQuantum);
194+
195+
currentTime = perftool::common::GetTime::getTimeMilli();
196+
}
197+
}
198+
177199
Int32 AppUtil::getHostAddress(UInt32* address)
178200
{
179201
char hostName[256];

Cpp-C/Ema/Examples/PerfTools/Common/AppUtil.h

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class AppUtil
4545

4646
static const refinitiv::ema::access::EmaString& getSysTimeStr();
4747
static void sleep(refinitiv::ema::access::UInt64 millisecs);
48+
static void sleepUI(refinitiv::ema::access::UInt64 millisecs, refinitiv::ema::access::UInt64 millisecsQuantum = 100);
4849

4950
static refinitiv::ema::access::Int32 getHostAddress(refinitiv::ema::access::UInt32* address);
5051

Cpp-C/Ema/Examples/PerfTools/Common/CtrlBreakHandler.cpp

+23-14
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,34 @@ struct sigaction CtrlBreakHandler::_oldSigAction;
2525
CtrlBreakHandler::CtrlBreakHandler()
2626
{
2727
#if defined(WIN32)
28-
SetConsoleCtrlHandler( &CtrlBreakHandler::TermHandlerRoutine, TRUE ) ;
2928
#else
3029
bzero( &_sigAction, sizeof( _sigAction ) );
3130
bzero( &_oldSigAction, sizeof( _oldSigAction ) );
32-
33-
_sigAction.sa_sigaction = sigAction;
34-
_sigAction.sa_flags = SA_SIGINFO;
35-
36-
sigaction( SIGINT, &_sigAction, &_oldSigAction );
3731
#endif // WIN32
3832
}
3933

40-
#ifndef WIN32
34+
#if defined(WIN32)
4135
void CtrlBreakHandler::registerAction()
4236
{
43-
bzero( &_sigAction, sizeof( _sigAction ) );
44-
bzero( &_oldSigAction, sizeof( _oldSigAction ) );
37+
SetConsoleCtrlHandler(&CtrlBreakHandler::TermHandlerRoutine, TRUE);
38+
}
39+
#else
40+
void CtrlBreakHandler::registerAction()
41+
{
42+
struct sigaction tempSigAction;
43+
bzero( &tempSigAction, sizeof( tempSigAction ) );
4544

46-
_sigAction.sa_sigaction = sigAction;
47-
_sigAction.sa_flags = SA_SIGINFO;
45+
sigaction(SIGINT, NULL, &tempSigAction);
46+
if (tempSigAction.sa_sigaction != sigAction)
47+
{
48+
bzero( &_sigAction, sizeof( _sigAction ) );
49+
bzero( &_oldSigAction, sizeof( _oldSigAction ) );
4850

49-
sigaction( SIGINT, &_sigAction, &_oldSigAction );
51+
_sigAction.sa_sigaction = sigAction;
52+
_sigAction.sa_flags = SA_SIGINFO;
53+
54+
sigaction( SIGINT, &_sigAction, &_oldSigAction );
55+
}
5056
}
5157
#endif
5258

@@ -56,7 +62,8 @@ CtrlBreakHandler::~CtrlBreakHandler()
5662
#if defined(WIN32)
5763
SetConsoleCtrlHandler( &CtrlBreakHandler::TermHandlerRoutine, FALSE );
5864
#else
59-
sigaction( SIGINT, &_oldSigAction, NULL );
65+
if (_oldSigAction.sa_sigaction != NULL)
66+
sigaction( SIGINT, &_oldSigAction, NULL );
6067
#endif
6168
}
6269

@@ -70,7 +77,7 @@ BOOL WINAPI CtrlBreakHandler::TermHandlerRoutine( DWORD dwCtrlType )
7077
case CTRL_SHUTDOWN_EVENT:
7178
case CTRL_C_EVENT:
7279
m_isTerminated = true;
73-
return TRUE;
80+
break;
7481
}
7582
return FALSE;
7683
}
@@ -79,6 +86,8 @@ extern "C" {
7986
void CtrlBreakHandler::sigAction( int sig, siginfo_t* pSiginfo, void* pv )
8087
{
8188
m_isTerminated = true;
89+
if (_oldSigAction.sa_sigaction != NULL)
90+
(_oldSigAction.sa_sigaction)(sig, pSiginfo, pv);
8291
}
8392
}
8493
#endif

Cpp-C/Ema/Examples/PerfTools/Common/CtrlBreakHandler.h

+6-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ class CtrlBreakHandler
6969
*/
7070
static bool isTerminated() { return m_isTerminated; }
7171
//@}
72-
#ifndef WIN32
72+
73+
///@name Register action handler
74+
//@{
75+
/** method to register a handler for CTRL-C or CTRL_BREAK
76+
*/
7377
static void registerAction();
74-
#endif
78+
//@}
7579

7680
private:
7781

Cpp-C/Ema/Examples/PerfTools/EmaCppConsPerf/ConsPerfConfig.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ statsFilename("ConsStats"), writeStatsInterval(5), displayStats(true), logLatenc
1212
itemRequestCount(100000), commonItemCount(0), itemRequestsPerSec(35000), requestSnapshots(false),
1313
serviceName("DIRECT_FEED"), useServiceId(false), useUserDispatch( false ), itemFilename("350k.xml"),
1414
msgFilename("MsgData.xml"), postsPerSec(0), latencyPostsPerSec(0), genMsgsPerSec(0), latencyGenMsgsPerSec(0), apiThreadBindList(0),
15-
websocketProtocol(NoWebSocketEnum)
15+
consumerName(""), websocketProtocol(NoWebSocketEnum)
1616
{
1717
apiThreadBindList = new long[1];
1818
apiThreadBindList[0] = -1;
@@ -52,6 +52,8 @@ void ConsPerfConfig::clearPerfConfig()
5252
msgFilename = "MsgData.xml";
5353
useServiceId = false;
5454
useUserDispatch = false;
55+
consumerName = "";
56+
websocketProtocol = NoWebSocketEnum;
5557
}
5658

5759
ConsPerfConfig::~ConsPerfConfig()

Cpp-C/Ema/Examples/PerfTools/EmaCppConsPerf/ConsPerfConfig.h

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class ConsPerfConfig : public PerfConfig
5454
Int32 _requestsPerTickRemainder;
5555
long *apiThreadBindList; // CPU ID list for threads that handle connections. See -threads
5656

57+
EmaString consumerName; // Name of the Consumer component in EmaConfig.xml. See -consumerName.
58+
5759
enum WebsocketProtocol
5860
{
5961
NoWebSocketEnum,

0 commit comments

Comments
 (0)