Hi,
I'm trying to implement the Dictionary downloading mechanism in an EMA C++ Interactive Provider.
To do so, I'm playing with the '350__Dictionary__Streaming' example of the EMA SDK.
I have a question regarding the following instruction:
provider.registerClient(ReqMsg().name("RWFFld").filter(DICTIONARY_NORMAL).serviceName("DIRECT_FEED").domainType(MMT_DICTIONARY), appClient);
As far as I understood, any client registration in EMA where the serviceName is specified, requires that EMA knows such service in advance, otherwise the operation is rejected.
For instance, a consumer that registers a client for a MarketPrice item on the service DIRECT_FEED will be able to perform the request only if the required info about the DIRECT_FEED service has been received previously on the DIRECTORY domain.
So my question is: where does the IProvider get this information to register a client on the MMT_DICTIONARY domain and specifying the service name?
So far, the only way I found to make EMA see the service is to declare the service among the ones provided by the IProvider itself.
If I don't do it, EMA does not accept the registerClient(...) requests using that service, and a status message is received with text "Closed / Suspect / Source unknown / 'Service name of 'DIRECT_FEED' is not found.'".
Ps: to make some tests, I connected an ETA based NIProvider (able to handle dictionary requests) to my IProvider. I understand that this isn't a real use case, hoping that it isn't the root cause of my issue..
By the way, if I make the dictionary requests without specifying the service, and edit the NIProvider to send refresh without specifying the service, everything works well.
Please help me clarifying this.
Thanks
Paolo