question

Upvotes
Accepted
11 2 3 5

Contribute more than a RIC via EMA C++ (RCC)

Hi there,

I've been trying to do a contribution with more than a RIC at same time, in other words, with an unique submit() or PostMsg().

So far I'm only able to contribute 1 RIC at time, using bellow method:

thomsonreuters::ema::access::FieldList fList;

fList.clear();
fList.addReal(_fieldId0, _vlr,thomsonreuters::ema::access::OmmReal::ExponentNeg2Enum);
fList.addDate(_fieldId1, year, month, day);
fList.addAscii(_fieldId2, valueEmaStr);
fList.complete();

_pOmmConsumer->submit(PostMsg().streamId(_postStreamID)
            .postId(_postID).domainType(MMT_MARKET_PRICE)
            .solicitAck(true).complete()
            .payload(UpdateMsg().streamId(_postStreamID).name(_ric).payload(fList))
            .complete(),
            _subStreamHandle);

The issue is we've more than 10.000 RICs and, in average, they took next to 1 sec to receive a message from a TCP connection then treat this message to be put proper way at due variables, to finally do the contribution.

How can I add more than an UpdateMsg() in PostMsg().payload()? Or add more than a PostMsg() in _pOmmConsumer->submit()?

I tried to use ElementList().addUpdateMsg() and ElementList().addPostMsg() to solve above questions but they need the "const EmaString &name" parameter and I've no idea what it could be.

ElementList &   addUpdateMsg (const EmaString &name, const UpdateMsg &value)
 
ElementList &   addPostMsg (const EmaString &name, const PostMsg &value)
elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apic++rcc-api
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.

1 Answer

Upvote
Accepted
52.4k 134 44 63

@Bruno.Leal

Refer to the EMA C++ reference guide, the submit method can be used to send one post message at a time. The payload of the post message can be a container (Fieldlist, Elementlist, Map, …) or a message (Refresh, Update, Status,…) depending on the Refinitiv Domain Model. For example, if the post message is for the MarketPrice domain, the payload of the post message must be a Fieldlist or a message (Refresh, or Update) that contains a Fieldlist.

You can’t use ElementList().addUpdateMsg() and ElementList().addPostMsg() because the RCC may not be able to understand it. In conclusion, for the MarketPrice domain, you can’t send multiple post messages or multiple messages in the post messages with EMA.

However, with ETA C, you can encode multiple post messages in a packed buffer and then submit the packed buffer containing multiple post messages to RCC. For more information about the packed buffer, please refer to section 10.11 Packing Additional Data into a Buffer in the ETA C Developer 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.

@jirapongse.phuriphanvichai Do you have any practical examples to share?