When do a consumer get StreamState::NON_STREAMING? Can u get it when u subscribe to a ric (say IBM.N)?
The consumer can get StreamState::NON_STREAMING when using snapshot request. In EMA, the consumer can set interestAfterRefresh(false) to send snapshot request.
consumer.registerClient( ReqMsg().serviceName( "ELEKTRON" ).name( "IBM.N" ).interestAfterRefresh(false), client );
After that, the stream state of the response will be Non-streaming.
Item Name: IBN.NService Name: ELEKTRONItem State: Non-streaming / Ok / None / 'All is well'Fid: 1 Name: PROD_PERM value: 213Fid: 2 Name: RDNDISPLAY value: 153Fid: 3 Name: DSPLY_NAME value: BARCLAYS LONFid: 5 Name: TIMACT value: 08:20:00:000:000:000
I am getting error message as service name not found , any suggestions ?
Item Name: XXXXService Name: <not set>Item State: Open / Ok / None / 'Refresh Completed'Handle: 31721744 Closure: 0x1Item Name: IBM.NService Name: ELEKTRONItem State: Closed / Suspect / Source unknown / 'Service name of 'ELEKTRON' is not found.'<!-- Outgoing Message (Channel IPC descriptor = 9) --><!-- Time: 14:58:18:442 --><!-- rwfMajorVer="14" rwfMinorVer="0" --><closeMsg domainType="RSSL_DMT_LOGIN" streamId="1" containerType="RSSL_DT_NO_DATA" flags="0x0" dataSize="0">
consumer.registerClient( ReqMsg().serviceName( "ELEKTRON" ).name( "IBM.N" ).interestAfterRefresh(false), client ); I'm getting service name not found ,. Any suggestions
@yajnasteju
From the response, you got the XML tracing. Please provide the full XML tracing. We can know the available service names from the XML tracing.
You can enable XML tracing by using <XmlTraceToStdout> or <XmlTraceToFile> under the channel (Channel_1) of the default Consumer (Consumer_1). The EMA configuration file is EmaConfig.xml.
<Channel> <Name value="Channel_1"/> <ChannelType value="ChannelType::RSSL_SOCKET"/> <CompressionType value="CompressionType::None"/> <GuaranteedOutputBuffers value="5000"/> <ConnectionPingTimeout value="30000"/> <TcpNodelay value="1"/> <Host value="localhost"/> <Port value="14002"/> <XmlTraceToStdout value="1"/> <XmlTraceToFile value="1"/></Channel>
@jirapongse.phuriphanvichai
I have the Xml Tracing , which node should i look into for the list of services ? the file is too huge to go through
The available services are in the refresh message of RSSL_DMT_SOURCE domain.
<refreshMsg domainType="RSSL_DMT_SOURCE" streamId="2" containerType="RSSL_DT_MAP" flags="0x168 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_CLEAR_CACHE)" groupId="0" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" dataSize="3206">
Each mapEntry will contain the service information. You can find the service name from the "Name" elementEntry.
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="2115" >
<filterList containerType="RSSL_DT_ELEMENT_LIST" countHint="0" flags="0x0"> <filterEntry id="1" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="RSSL_DT_ASCII_STRING" data="API_ELEKTRON_EPD_RSSL"/>
@Jirapongse
thanks a lot , it is working