This is the Refinitiv Real-Time SDK. This SDK encompasses a couple of APIs: Enterprise Message API (EMA) and the Enterprise Transport API (ETA).
The Enterprise Message API (EMA) is an ease of use, open source, OMM API. EMA is designed to provide clients rapid development of applications, minimizing lines of code and providing a broad range of flexibility. It provides flexible configuration with default values to simplify use and deployment. EMA is written on top of the Enterprise Transport API (ETA) utilizing the Value Added Reactor and Watchlist.
The Enterprise Transport API (ETA) is an open source Refinitiv low-level Transport and OMM encoder/decoder API. It is used by the Refinitiv Real-Time Distribution Systems and Refinitiv Real-Time for the optimal distribution of OMM/RWF data and allows applications to achieve the highest performance, highest throughput, and lowest latency. ETA fully supports all OMM constructs and messages. Applications may be written to core ETA (RSSL), to ValueAdd/Reactor layer or to Watchlist layer.
Copyright (C) 2019-2023 Refinitiv. All rights reserved.
Please refer to the CHANGELOG file in this section to see what is new in this release of Refinitiv Real-Time SDK - C/C++ Edition. Also in CHANGELOG is a list of issues fixed in this release and a history of features and fixes introduced per released version.
External modules used by this version of RTSDK C/C++:
Dependency Version
---------- -------
openSSL 1.0.1e
openSSL 1.1.1a
cJSON 1.7.15
curl 7.86.0
googletest release-1.8.1
l8w8jwt 2.1.6
libxml2 2.10.3
lz4 1.9.4
zlib 1.2.13
- Please note that curl and openSSL are dynamically loaded at runtime.
- Above mentioned version of openSSL was used in test. Please note that the RTSDK package does not build openSSL, and we recommend that all installed versions of openSSL are patched to the latest version available.
- Please note that the default curl libraries and CMake build scripting provided in the RTSDK package are built against the default openSSL version provided by the Linux distribution (Oracle Linux 7, RedHat 8). If the application is using a different version of openSSL than the distribution, one must obtain a version of Curl that links against the same major and minor version of openSSL as the application and rebuild to ensure that one version of openSSL is used. For Windows, the RTSDK package Curl build, links against the Windows schannel library, and does not have the possibility of a version incompatability issue with openSSL.
- Check installation guide for details regarding including external dependencies for build
-
HP Intel PC or AMD Opteron (64-bit)
-
CPUs must have high resolution timer frequencies greater than 1GHz.
-
Oracle Linux Server 7.X Release 64-bit
-
Red Hat Enterprise Server 8.X Release 64-bit
-
CentOS 7.X Release 64-bit
-
TCP/IP networking support installed if using TCP Socket connection types
-
UDP Multicast networking support if using Reliable Multicast connection type
-
Appropriate system access permissions when using Unidirectional Shared Memory connection types
- For best performance, ensure that machines and network switches are configured appropriately. See specific OS and hardware documentation for more information.
Users are welcome to migrate open source code to the platforms they prefer, however support for the included libraries is only provided on platforms listed below.
Platforms:
Microsoft Windows Server 2012 R2 Standard Edition or later 64-bit
Microsoft Windows Server 2016 Standard Edition or later 64-bit
Microsoft Windows Server 2019 Standard Edition or later 64-bit
Microsoft Windows 8.1 Professional or later 64-bit
Microsoft Windows 10 Professional 64-bit
Compilers (only on OSs supported by Microsoft):
Microsoft Visual Studio 14.0 (2015) 64-bit
Microsoft Visual Studio 14.1 (2017) 64-bit
Microsoft Visual Studio 14.2 (2019) 64-bit
Microsoft Visual Studio 14.3 (2022) 64-bit
Notes:
- User has the option to use pre-built libraries for the compilers listed above and use them on different Windows operating systems that have support for those compilers to build their applications. User may also choose to build source and applications.
- CMake supports VS 2013 and VS 2012 builds although libraries are no longer shipped. If closed source from BinaryPack is required to build, please use a BinaryPack prior to Real-Time-SDK-2.0.3.L1 to build these deprecated Visual Studio versions at your own risk as changes to BinaryPacks will not be available for deprecated compilers.
- For V2 authentication with RTO, RTSDK introduced the l8w8jwt library. When building with Visual Studio 2019 or above, this library only works with Windows 10 SDK for October 2018 Update, version 1809 or later.
Platforms & Compilers:
GCC compiler suite version 4.8.2 or higher for Oracle Linux 7.X, 64-bit, Native build
GCC compiler suite version 4.8.2 or higher for CentOS 7.0, 64-bit, qualification with OL7 library build
GCC compiler suite version 8.3.1 or higher for Red Hat Enterprise Server 8.X, 64-bit, Native build
Clang compiler version 9.0.1 for Linux 8 64-bit, qualification with RH8 library build
- Eta VACache library built
NOTE: User has the option to use pre-built libraries or build source natively on a platform of choice. Pre-built libraries for Red Hat 8 and Oracle Linux 7 are available in release packages available on Refinitiv Developer Portal.
This release has been tested with supported valid OS/compiler combinations.
This release has been tested with the following on supported platform/OS combinations. Please note that the list of tested platforms and compiler combination below reflects test of two use cases: using pre-built libraries to build applications and natively building source and using those libraries to build applications.
OS GCC Version Use-Prebuilt Library Use-Natively Build Library
-------------------------------- ------------ ---------------------- ----------------------------
CentOS 7.0 64-bit GCC 4.8.2 OL7_64_GCC482 CENTOS7_64_GCC482
Oracle Linux Server 7.7 64-bit GCC 4.8.5 OL7_64_GCC482 OL7_64_GCC485
Red Hat Enterprise Linux Server 7.7 64-bit GCC 4.8.5 OL7_64_GCC482 RHEL7_64_GCC485
Oracle Linux Server 7.7 64-bit GCC 7.4.0 n/a OL7_64_GCC740
Red Hat Enterprise Linux Server 7.7 64-bit GCC 7.4.0 n/a RHEL7_64_GCC740
Red Hat Enterprise Linux Server 8.0 64-bit GCC 8.3.1 RHEL8_64_GCC831 RHEL8_64_GCC831
n/a = This is not a tested combination
Proxies:
- Microsoft's Forefront
- Free Proxy
Authentication Schemes:
- Basic
- NTLM
- NEGOTIATE/Kerberos ( Windows only )
This release supports encryption using TLS 1.2.
RTSDK Cpp-C supports connectivity to the following platforms:
- Refinitiv Real-Time Distribution System (RSSL/RWF connections) : ADS version 2.6 and higher, ADH version 2.6 and higher.
- Refinitiv Real-Time: Refinitiv Real-Time Deployed, Refinitiv Real-Time Hosted, Refinitiv Direct Feed
NOTE: Connectivity to RDF-Direct is supported for Level 1 and Level 2 data.
This release has been tested with the following:
- ADS 3.6.3
- ADH 3.6.3
- DACS 7.8
Please refer to top level README.md and to Cpp-C/Eta/README.md or Cpp-C/Ema/README.md files to find more information. Sections Cpp-C/Eta/Docs/ and Cpp-C/Ema/Docs contain PDF/HTML documentation. In current directory, please find the test plan with test results: RTSDK-C-Edition_Test_Plan.xlsx
Please refer to Installation Guide for ETA or EMA for detailed instructions. In this section are some basic details.
There are 3 ways to install Refinitiv Real-Time SDK:
Obtain the source from this repository on GitHub. It will contain all of the required source to build RTSDK as detailed below. In addition, this repository depends on a Binary Pack found in the release assets section that is auto pulled by a build. The BinaryPack contains libraries for the closed source portions of the product, permitting users to build and link all dependent libraries to have a fully functional product.
Refinitiv Real-Time SDK package may also be downloaded from Refinitiv Developer Portal.
Refinitiv Real-Time SDK package is also available on MyRefinitiv.com.
Using CMake:
Cmake is required to create the Linux Makefile files and Windows Solution and vcxproj files. To build examples or re-build libraries, user must download CMake version 3.10.3 or higher.
In addition, Python 3 is required. This can be installed either through yum or a windows installer.
Refer to RTSDK C/C++ Installation Guide located in Cpp-C/Eta/Docs or Cpp-C/Ema/Docs for more detailed CMake build instructions than what is described below.
For Linux:
Note: For Linux builds with RedHat based distributions(RHEL, CentOS, Oracle Linux), the CMake scripts require lsb_release to be installed. For Red Hat Enterprise Linux and CentOS, this can be installed with the following command (this will require root access to the machine):
yum install redhat-lsb-core
At the same directory level as the resulting RTSDK directory, issue the following command to build the optimized Makefile files:
cmake -HsourceDir -BbuildDir
# sourceDir is is the directory in which the top-level CMake entry point (CMakeLists.txt) resides. By default, when you build using the Solution and vcxproj files, output is sent to directory specified in sourceDir.
# buildDir is the directory where all build output is placed. This directory is automatically created.
Issue the following command to build debug Makefile files:
cmake -HRTSDK -BbuildDir –DCMAKE_BUILD_TYPE=Debug
The cmake command builds all needed Makefile files (and related dependencies) in the buildDir directory. Go to the buildDir directory and type "make" or "gmake" to create the RTSDK libraries. Note that the libraries and sample application executables are sent to the RTSDK directory under sourceDir.
For Windows:
At the same directory level as the resulting RTSDK directory, issue the following command to build the Solution and vcxproj files:
cmake -HsourceDir -BbuildDir -G <VisualStudioVersion>
# sourceDir is is the directory in which the top-level CMake entry point (CMakeLists.txt) resides. By default, when you build using the Solution and vcxproj files, output is sent to directory specified in sourceDir.
# buildDir is the directory where all build output is placed. This directory is automatically created
# "VisualStudioVersion" is the visual studio version to use for build on windows.
# Valid values for VisualStudioVersion are
# "Visual Studio 17 2022" -A x64
# "Visual Studio 16 2019" -A x64
# "Visual Studio 15 2017 Win64"
# "Visual Studio 14 2015 Win64"
# Note: A list of visual studio versions can be obtained by typing "cmake -help".
# Note: CMake supports VS 2013 and VS 2012 builds although libraries are no longer shipped. If closed source from BinaryPack is required to build, please use a BinaryPack prior to Real-Time-SDK-2.0.3.L1 to build these deprecated Visual Studio versions at your own risk. Changes to BinaryPacks will not be available for deprecated compilers.
The cmake command builds all needed Solution and vcxproj files (and other related files) in the buildDir directory. User must open these files and build all libraries and examples in the same manner as with prior RTSDK versions. Note that the libraries and sample application executables are sent to an RTSDK directory under sourceDir.
Note that your installation of Visual Studio needs to be updated to add Microsoft Foundation Classes per Microsoft when encountering this build error: fatal error RC105: cannot open include file 'afxres.h'.
32 bit support:
CMake has build support for 32 bit platforms. This 32-bit support is available only for ETA core RSSL layer.
Linux: Add "-DBUILD_32_BIT_ETA=ON" to the cmake build
Windows: Do not add "Win64" or "-A x64" to the "VisualStudioVersion". Example, When specifying, "Visual Studio 14 2015", for a 64-bit build it would be "Visual Studio 14 2015 Win64". For a 32-bit build, it would be "Visual Studio 14 2015"
NOTE: Starting with SDK version 1.3.1, DACS libraries are available for 32-bits in the BinaryPack. NOTE: DACS libraries provided in BinaryPack for VS2019 is copied from VS 2017 as these build is not currently available.
The Refinitiv RDMFieldDictionary
and enumtype.def
files are present in this GitHub repo under Cpp-C/etc
. In addition, the most current version can be downloaded from MyRefinitiv.com. Search for "Service Pack" and choose the latest version of Refinitiv Real-Time Template Service Pack.
If you discover any issues with this project, please feel free to create an Issue.
If you have coding suggestions that you would like to provide for review, please create a Pull Request.
We will review issues and pull requests to determine any appropriate changes.
In the event you would like to contribute to this repository, it is required that you read and sign the following:
Please email a signed and scanned copy to [email protected]. If you require that a signed agreement has to be physically mailed to us, please email the request for a mailing address and we will get back to you on where you can send the signed documents.
- For more details on each API, please see the corresponding readme file in their top level directory.
- This package contains APIs that are subject to proprietary and open source licenses. Please make sure to read the readme files within each package for clarification.
- Please make sure to review the LICENSE.md file.