We have an application which is subscribing to Market price updates(UPA) and I am currently working on retrieving the service status by subscribing to the Source directory messages as well. Could someone please help understand what is the expected outcome in the below scenario:
1. The channel is Active and the Service is down.
I understand that subscribing to source directory message will send an Update message if there is a change in the Service.
What happens to the market price updates in this case? Will it continue to receive updates when service is up again or is this something that needs to handled by the consumer?
When the service has gone down the TREP will send a Source Directory Update Message.
The update message will contain the service state filter. See the example below.
<updateMsg domainType="RSSL_DMT_SOURCE" streamId="2" containerType="RSSL_DT_MAP" flags="0x80 (RSSL_UPMF_DO_NOT_CONFLATE)" updateType="0 (RDM_UPD_EVENT_TYPE_UNSPECIFIED)" dataSize="72"> <dataBody> <map flags="0x0" countHint="0" keyPrimitiveType="RSSL_DT_UINT" containerType="RSSL_DT_FILTER_LIST" > <mapEntry flags="0x0" action="RSSL_MPEA_UPDATE_ENTRY" key="4513" > <filterList containerType="RSSL_DT_ELEMENT_LIST" countHint="0" flags="0x0"> <filterEntry id="2" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST"> <elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)"> <elementEntry name="ServiceState" dataType="RSSL_DT_UINT" data="0"/> <elementEntry name="AcceptingRequests" dataType="RSSL_DT_UINT" data="1"/> <elementEntry name="Status" dataType="RSSL_DT_STATE" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" /> </elementList> </filterEntry> </filterList> </mapEntry> </map> </dataBody> </updateMsg>
As you can see, the service state filter has three elements; ServiceState, AcceptingRequests, and Status.
The Status element of service state filter means the status of every item provided by this service must be changed to this status.
Now, the status that was sent depends on the "SingleOpen" value in the login request.
"SingleOpen" specifies whether the provider or the consumer drives item recovery.
If SingleOpen is "1", then the provider will drive stream recovery. The Status element will have StreamState=Open and DataStatue=Suspect. This means all item streams are still open and the connected consumer will continue to receive refresh and updates when service is up. SingleOpen 1 is the default setting.
If SingleOpen is "0", then the provider will not drive item recovery; it is the responsibility of the consuming application to recover the item. The Status element will have StreamState=ClosedRecover and DataStatue=Suspect. The connected consumer will have to send an item request when the service is up.
So, by default, your application should continue to receive updates when service is up.