question

Upvotes
Accepted
1 1 0 0

I am looking for the correct C++ RFA library and developers guide. I am developing on Linux (3.10.0) using gcc 5.2.0 C++ compiler.

treprfarfa-apic++
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
7.6k 15 6 9

@blee

RFA C++ 8.x does not support GCC 5.x.

It supports GCC 4.x on Oracle Linux and RHEL 6&7. Please find Compiler and Supported OS from API Compatibility Matrix locates under the following folder

https://developers.refinitiv.com/elektron/elektron-sdk-cc/docs?content=5403&type=documentation_item

You can download the latest version of RFA C++ from

https://developers.refinitiv.com/thomson-reuters-enterprise-platform/robust-foundation-api-rfa/downloads

You can also find the RFA C++ Developer guide and other documents under folder Docs.

Anyway if you plan to develop a new application, I would suggest you use Elektron SDK C++ instead.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit can you help answer my question?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit thank you for your reply.

What is the difference between RFA C++ library vs Elektron SDK C++?

Will Elektron SDK C++ with MAPI?

I've been working with Hank Manson (hank.manson@refinitiv.com) and we just completed the Matching API (MAPI) conformance testing. Now I need market data feeds to trade on the MAPI session.

Thanks


Bill Lee

973-886-9409 (New York), blee@lucera.com

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit on the spreadsheet I don't GCC 5.x supported. I only see GCC 4.x and GCC 7.4 supported for RFA C++.

Since my compiler is GCC 5.2, can I still use RFA C++ 8.1?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit I am developing on CentOS Linux 7 which according to the spreadsheet says to use RFA C++ 8.1 but I can not really tell based on the my compiler version of gcc 5.2. thanks

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit Hi moragodkrit

I downloaded rfa8.1.2.L1.linux.rrg.tar.gz but I only see these libraries in the tarball.

drwxr-xr-x 3 blee blee 4096 Apr 3 18:06 RHEL6_32_GCC444

drwxr-xr-x 3 blee blee 4096 Apr 3 18:06 RHEL6_64_GCC444

drwxr-xr-x 3 blee blee 4096 Apr 3 18:06 OL7_64_GCC482


I was expecting a library for CentOS.7.0-64 bit OS which is my Linux Operating System. Any idea which library should I use?

According to the spreadsheet APICompatibilityMatrix_2020.3_3.xlsx , only RFA C++ 8.1 (newer) (OMM & 64 bits) is supported for .



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

Can anyone help answer my questions? Thanks

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 20

Hello @blee,

Please review this previous discussion of EMA vs RFA. So for a new application, EMA should be your choice, whenever at all possible.

If you are going to still go with RFA, please make sure to select the latest version available via Software Downaloads from my.refinitiv.com, at present I see 8.1.2.L1, so that you can benefit from all the available fixes.

On Centos 7, 64 bit, I would go with OL7, 64 bit. Per google "CentOS is a re-build of RHEL without the Red Hat branding. Oracle is a rebuild of RHEL with an optional altnerative kernel. Usually, for practical purposes, RHEL, CentOS and Oracle Linux are the same. They all share the same source code and very few configuration differences. "

Hope this help

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@zoya.farberov thank you for your reply. I will look into EMA vs RFA. I already certified with Matching API (MAPI) for trading. I was told specifically to use RFA to get market data. Will EMA allow me to subscribe to market data and then use those price to trade in MAPI? thanks

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 20

Hi @blee,

I am not familiar with MAPI. Here is what I can tell:

You can definitely consume market data (OMM/RSSL formatted) using EMA.

According to Matching API Guide on my.refiinitiv, Chapter 1 intro:

"Price discovery via API

  • RFA (Reuters Foundation API)
  • UPA (Ultra performant API) "

UPA is a supported mechanism in addition to RFA. UPA is previous name for ETA API that is part of Elektron API suite, same as EMA. EMA is an ease of use tier on top of ETA. Therefore, ETA is a supported option and EMA, in my understanding, should be a supported option as well, but less coding for you, compared to either RFA C++ or ETA C++.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@zoya.farberov


Can you help debug the Login message?

My consumer client is based on the C++ RFA download in rfa8.1.2.L1.linux.rrg/Setup/rfa8.1.2.L1.linux.rrg/Examples/StarterConsumer.

I sent a Login message using the following function but I am not getting a reply back.

A support person for RFA sent me this error message.


There seems to be an issue with the “Opaque data” in the REFRESH message to your logon REQUEST message. However, I don’t know what that is. This is the first time I’ve ever heard the term. Here is what the REFRESH message looks like:




==================================================

bool

RFAConsumer::

sendLoginRequest()

{

OMMItemIntSpec ommItemIntSpec;

ReqMsg reqMsg;

AttribInfo attribInfo;


reqMsg.setMsgModelType(MMT_LOGIN);

reqMsg.setInteractionType(ReqMsg::InitialImageFlag | ReqMsg::InterestAfterRefreshFlag);


attribInfo.setNameType(USER_NAME);

attribInfo.setName(_cfgVars.userName);


ElementList elementList;

ElementEntry element;

DataBuffer elementData;

ElementListWriteIterator elwiter;

elwiter.start(elementList);


element.setName(ENAME_APP_ID);

elementData.setFromString(_cfgVars.appId, DataBuffer::StringAsciiEnum);

element.setData(elementData);

elwiter.bind(element);


element.setName(ENAME_POSITION);

elementData.setFromString(_cfgVars.position, DataBuffer::StringAsciiEnum);

element.setData(elementData);

elwiter.bind(element);

elwiter.complete();

attribInfo.setAttrib(elementList);

reqMsg.setAttribInfo(attribInfo);

ommItemIntSpec.setMsg(&reqMsg);

_pLoginHandle = _pOMMConsumer->registerClient(_pEventQueue, &ommItemIntSpec, *this, NULL);

if(!_pLoginHandle)

return false;


return true;

}





icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

the function uses config values from below. This config is also supplied by the sample program but I updated the userName and itemName.


userName is the token and itemName is the ccy.


\appId = "256"

\enumDictionaryFilename = "./enumtype.def"

\fieldDictionaryFilename = "./RDMFieldDictionary"

# position to be used for Login

# According to the RDM usage guide: If the server is authenticating with DACS, the consumer application might be required to pass in a valid position.

# ip addr/hostname or ip addr/net

# \position = "<IP Address/hostname>"

\runTimeInSeconds = 0

\service = "DIRECT_FEED"

\session = "Session1"

\userName = "f2e43e37-76cd-4e66-8528-85921fcf25fe"

\itemName = "EUR/USD"

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @blee,

You will need to configure RFA correctly according to your assigned infrastructure endpoint and credentials.

Quickstart and RFA Cinfig Tutorial cover how to do this, and are the best place to get started.

---

In brief:

StarterConsumer example uses two configs, ExampleRFA.cfg and StarterConsumer.cfg

ExampleRFA you would point at your infra in the actively used session,

StarterConsumer config will name the session to be used (Session1 ?), service to be used, and user.

What is your infrastructure type, are you connecting to EaaS, deployed TREP, Electron Connect, ERT?

DIRECT_FEED is an example placeholder service name. It needs to be replaced with a valid service name. User looks invalid as well, please verify and use correct configuration for your endpoint and user.

Login will not work, unless configs are correct.

Hope this helps

Upvotes
1 1 0 0

@zoya.farberov


I am using both config files, ExampleRFA.cfg and StarterConsumer.cfg. This IP and port are taken from MATCHING API - Thomson Reuters Matching Host to Go Guide

\Connections\Connection_RSSL\connectionType = "RSSL"

\Connections\Connection_RSSL\rsslPort = "60239"

\Connections\Connection_RSSL\hostName = "159.220.63.15"


I've the ip and port configured correctly. Someone has already confirmed the connection state is UP.


I was told I am connecting to P2PS which is a part Matching API platform.


User is a token which retrieve from the FIX MAPI trading session.


I wish I can attached some documents here so you can a better understanding. Can you email me back at blee@lucera.com so I can send you documents.


Thanks



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

Here is my complete config files.


============RFAConsumer.cfg


\appId = "256"

\enumDictionaryFilename = "./enumtype.def"

\fieldDictionaryFilename = "./RDMFieldDictionary"

# position to be used for Login

# According to the RDM usage guide: If the server is authenticating with DACS, the consumer application might be required to pass in a valid position.

# ip addr/hostname or ip addr/net

# \position = "<IP Address/hostname>"

\runTimeInSeconds = 0

\service = "DIRECT_FEED"

\session = "Session1"

\userName = "f2e43e37-76cd-4e66-8528-85921fcf25fe"

\itemName = "EUR/USD"


============CommonRFA.cfg

\Sessions\Session1\connectionList = "Connection_RSSL"

\Connections\Connection_RSSL\connectionType = "RSSL"

\Connections\Connection_RSSL\rsslPort = "60239"

\Connections\Connection_RSSL\hostName = "159.220.63.15"


\Logger\AppLogger\windowsLoggerEnabled = false

\Logger\AppLogger\fileLoggerEnabled = true


\Logger\ComponentLoggers\Connections\messageFile = "RFA8_Connections"

\Logger\ComponentLoggers\Adapter\messageFile = "RFA8_Adapter"

\Logger\ComponentLoggers\SessionCore\messageFile = "RFA8_SessionLayer"

\Logger\ComponentLoggers\RSSL_Adapter\messageFile = "RFA8_RSSL_Adapter"

\Logger\ComponentLoggers\RSSL_Cons_Adapter\messageFile = "RFA8_RSSL_Cons_Adapter"

\Logger\ComponentLoggers\RSSL_Prov_Adapter\messageFile = "RFA8_RSSL_Prov_Adapter"

\Logger\ComponentLoggers\Static\messageFile = "RFA8_MsgFile"



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@blee

Is this a standard StarterConsumer that came with RFA SDK 8.0 or different?

CommonRFA.cfg looks correct, although by default, StarterConsumer example does not use CommonRFA.cfg, in code, it refers to "./ExampleRFA.cfg", please verify in code you run?

StarterConsumer example also uses StarterConsumer.cfg, please verify in code.

Please confirm with your account team what service name you are assigned ( if it is DIRECT_FEED or otherwise) and your assigned user.

There are two connections for matching API, market data and FIX. These are the service and user for your market data connection, OMM/RSSL, not for your FIX connection.

Upvotes
1 1 0 0

yes, StarterConsumer that came with RFA SDK 8.0 in this zip file. rfa8.1.2.L1.linux.rrg.


I renamed ExampleRFA.cfg to CommonRFA.cfg and also updated the code. the configs loaded fine.

I will check with my account team for the service name.

But the user name is the token I received from the FIX MAPI trading session. Have you deal the token before? That's why I want to send you some Reuters MAPI document so you can better understand what I am talking about.


here is the rfa.log which shows connection state is up.


[Thu Apr 9 17:02:40 2020]: (ComponentName) RSSL_Adapter: (Severity) Information: RSSL channel on connection "Default::Connection_RSSL 159.220.63.15:60239" has negotiated ping timeout set to: 15000


[Thu Apr 9 17:02:40 2020]: (ComponentName) RSSL_Cons_Adapter: (Severity) Information: Connection Status Changed, RSSL_Cons_Connection "Default::Connection_RSSL 159.220.63.15:60239" State: "Up" StatusCode: "None" StatusText: Connection up


[Thu Apr 9 17:02:40 2020]: (ComponentName) SessionCore: (Severity) Warning: Connection "Connection_RSSL" does not support views. View requests will be converted to full item requests for this connection.


[Thu Apr 9 17:02:40 2020]: (ComponentName) SessionCore: (Severity) Warning: Connection "Connection_RSSL" does not support Pause/Resume. Pause and Resume requests for this connection will be ignored.


[Thu Apr 9 17:02:40 2020]: (ComponentName) SessionCore: (Severity) Warning: Connection "Connection_RSSL" does not support optimized Pause/Resume. Optimized Pause/Resume requests will be converted to individual item Pause/Resume requests for this connection.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @blee,

please send to zoya.farberov@refinitiv.com

I have not dealt with Matching before. But the user has to be your individual assigned user, not the same for all. So usually found in welcome letter, not in Guide.

---

From the log, the first step, the connection is established, therefore ExampleRFA.cfg proven valid.

Next step, StarterConsumer.cfg, login relies on valid user, this does not look to be correct

And the last step, subscription, requires valid service and RIC. "EUR/USD" for example, is not a valid RIC.

To find out more, would enable RFA tracing. Add the below and restart

\Connections\Connection_RSSL\traceMsgToFile = true
\Connections\Connection_RSSL\traceMsgDomains = "all"
\Connections\Connection_RSSL\traceMsgMaxMsgSize = 5000000
\Connections\Connection_RSSL\traceMsgMultipleFiles = true
\Connections\Connection_RSSL\tracePing = true

check the file in the folder after a bit of wait.

Upvotes
1 1 0 0

here is section from

THOMSON REUTERS MATCHING DATA FEED DIRECT USER GUIDE


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@blee,

I see the guide THOMSON REUTERS MATCHING DATA FEED DIRECT USER GUIDE

I copy what you are saying about user obtained from FIX:

"This is the value retrieved from the Text(58) tag of the FIX Login (35=A) response."

Also says:

ApplicationId 174,

StarterConsumer, by default uses 256

Position is IP/Net

Please try to follow, but also it appears that tracing login request and response would be useful.


Upvotes
1 1 0 0

@zoya.farberov

Service name is not used in the Login message. It is only used in the subscription request message.

I still have not gotten a reply back from the Login message.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
7.6k 15 6 9

@blee

Please contact MAPI support team via
https://transactions.thomsonreuters.com/

MAPI has its own dedicated support channel. The API is a wrapper class builds on top of RFA. As far as I understand, it requires their own authentication server with infrastructure to login and sends/receive a message.

You can also check with the MAPI support team if they have any plans to support ESDK.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@moragodkrit


I'm working with a MAPI support in https://transactions.thomsonreuters.com/. His name is Hank Manson. I already completed the conformance testing with him on FIX MAPI Trading. Unfortunately, he only mainly supports MAPI Trading session using FIX. For the RFA debugging and development questions, he asked me to check in RDC forum. That's why I am here now.

Hank has never heard/worked with EMA or ESDK. He only works with clients using RFA API for market data in MAPI and the FIX MAPI Trading API.


The specs I received from him are


1. THOMSON REUTERS MATCHING DATA FEED DIRECT USER GUIDE (RFA C++)

2. THOMSON REUTERS MATCHING FIX INTERFACE USER GUIDE (FIX Protocol)


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
7.6k 15 6 9

@blee

But from your latest post, it seems to be a question regarding how to use RFA to login to the Matching Data Feed server, which should be answered by the MAPI team. I'm curious why Hank Manson suggests you ask the question with Dev forum. As far as I understand the team should be able to provide you a sample app with steps to call API codes to send log in to the server and get the data. Also, if you have a sample consumer app provided by the MAPI team, you can also turn on the RSSL trace while running the application so you can see the login request message and the response message from the server.

I do not have access to the Matching Data feed server so that what I can help is just providing the suggestion for setting values in RFA codes. If you need to pass the token in a Login request, you may try to change Login AttributInfo.NameType to use Token according to RDMUsageGuide.pdf provides in RFA C++ Development Kit.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 20

Hello all and @blee,

Let me update on RFA part of the question only:

Subsequent to the review of Matching Data Feed Direct User Guide, a couple of updates were made by Bill (@blee) for the purposes of testing, including service and itemName in StarterConsumer config, model changed to MarketByPrice and the last update was:

"...using MMT_MARKET_BY_PRICE fixes the problem", resulting in streaming data seen.

It appears that the next steps in the integration will be MAPI-specific.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 0 0

@zoya.farberov @moragodkrit Thank you for your help.

I got market data updates on Friday by using MMT_MARKET_BY_PRICE as suggested by Zoya.

However, this morning I got this error now. Any idea?


2020 Apr 13 12:46:10.363 ST GMT-05:00 7D85 AFA77740 537 TRACE <- Received MMT_LOGIN Status - Login Accepted

streamState : Open

dataState : Ok

statusCode : None

statusText : Login accepted by host ld4p-hd3scad02a..

2020 Apr 13 12:46:10.504 ST GMT-05:00 7D85 AFA77740 594 TRACE <- Received MMT_MARKET_BY_PRICE Status EUR=

serviceName : TRFX_MDFD_Standard

symbolName : EUR=

streamState : Closed

dataState : Suspect

statusCode : NotAuthorized

statusText : A21: DACS User Profile denied access to vendor

.

I am using this config. This is the same as Friday except I updated the userName(token). I have to use a new token for beginning of each week which I got it from the FIX session.


\appId = "174"

\enumDictionaryFilename = "./enumtype.def"

\fieldDictionaryFilename = "./RDMFieldDictionary"

# position to be used for Login

# According to the RDM usage guide: If the server is authenticating with DACS, the consumer application might be required to pass in a valid position.

# ip addr/hostname or ip addr/net

# \position = "<IP Address/hostname>"

\runTimeInSeconds = 0

\service = "TRFX_MDFD_Standard"

\session = "Session1"

\userName = "4dbb8a1d-5d84-4f44-a89e-b93723b120c3"

\itemName = "EUR="


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @blee

Do you still encounter the issue? Did you have a change to verify user credential and contact MAPI support as suggested by @zoya ?

Hi @blee,

It's better to post a new question as a separate new question, so that it is visible as question and not as one of the answers.

You can always include a link to the previous related question for reference.

Hi @blee,

Please check that the user credential, that is supplied into StarterConsumer, is correct, maybe it makes sense to remove it, re-copy, re-paste, and re-try the example?

If this does not help, please verify the credential is valid with MAP support.

Upvotes
1 1 0 0

I was able to find out by playing around. thank you!!

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.