question

Upvotes
Accepted
3 0 1 5

What do the OmmState values mean?

We are looking for a description of what information is provided by the C++ Reuters Elektron ema Omm::StatusMsg class so that we can use them correctly. In particular we are looking for

  • the exact meaning and significance of each of the values in the OmmState enum that are returned StatusMsg::getStatusCode() – that is, when would we see them, what do they indicate has happened, and what should we do if we do see them;
  • the meaning and significance of each of these values that are returned by StatusMsg::getStreamState();
  • clarification as to whether the status applies only to the OmmConsumerClient for whose onStatusMsg was called (and hence that subscription) or to the whole of the OmmConsumer (and its session)
  • whether there is anything else we should be using to determine the status of our subscription.

Thus far we have only found the comments on the OmmState declaration, but the names and comments are not as precise as we would like.

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-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.

Upvotes
Accepted
7.6k 15 6 9

@David.Cornell

I found some description of the state code in ETA Reference Manual (html). You may find the description from ETA document instead as the EMA build on top of ETA. The enum value should be the same. It may not cover all codes in EMA but I think it provides more details comparing with EMA document. Attached file is the information from the document I have exported to PDF file.

ultraperformanceapi-ceditionreferencemanual-rsslst.pdf

I have copied it from ETA document (html) which locates at <Elektron SDK Install Path>/Eta/Docs/doxygen/ETA/group__RsslStateType.html#ga43d7477e19a12dbb6857245f1ff3b208

For example,

file:///C:/EMA/Elektron-SDK1.1.1.win.rrg/Eta/Docs/doxygen/ETA/group__RsslStateType.html#ga43d7477e19a12dbb6857245f1ff3b208


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
3 0 1 5

Thanks. That those descriptions are helpful.

EMA provides this on a callback to an OmmConsumerClient object, which corresponds to a subscription for an instrument. Do you know if the stream states should be interpreted as applying only to that subscription, or to all subscriptions?

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

@David.Cornell

It should be interpreted as applying only to that subscription.

Basically the EMA assigns all opened items or instruments a unique numeric identifier (e.g. UInt64), called a handle, which is returned by the OmmConsumer::registerClient() call. A handle is valid as long as its associated item stays open. In case that your application send multiple requests for multiple items, to identify event stream in the EMA client callback e.g. OnRefreshMsg,onStatusMsg, you can get handle from OmmConsumerEvent object using getHandle() and then compare it with the handle returned by registerClient.

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
3 0 1 5

Are you saying that the 'stream' is the set of messages coming in response to a request (which relates to only one client), not the communication channel (which would affect more than one client)?

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

@David.Cornell

Stream in this case is not network communication channel. It's data stream for each domain model (Login , Item, Directory according to RDM Usage guide). EMA internal has to maintain the stream so that it can generate events for particular request.

Each time you call registerClient to open a new item subscription, EMA returns handle which you can used to identify each subscription. If application send item request for RIC A,B,C and D , it will have four item stream. Then it appears that your DACS user does not have permission to request item B and C, application should get onStatus callback with stream state is closed for item B and C but A and D still remains open and get Refresh and Update as usual. That is the concepts I want to explain.

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.