We are developing a RSSL provider in RFA 8.
When we subscribe to a valid instrument with the rmdstestclient an connect to this provider we receive all related fields.
When I subscribe to an invalid instrument with the same rmdstestclient we do NOT receive any (status) info in the application itself.
Number of Connection Count = 1
Creating RSSL connection Host: 220.127.116.11 Port: 20406
UPA server component version: rfa8.1.0.linux.eload 64-bit
Setting rmds connection 0x28e7ec0
Connection list count is 1
SupportBatchRequests Initial Open: Yes
SupportBatchRequests Reissue: Yes
In the log (I use rmdstestclient with the -l parameter) however I do see the "error" message:
NOT_ENTITLED: Request not allowed. Account is not entitled for namespace 'test', which is good.
Received source directory response. <!-- rwfMajorVer="14" rwfMinorVer="0" --> <requestMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x4C (RSSL_RQMF_STREAMING|RSSL_RQMF_MSG_KEY_IN_UPDATES|RSSL_RQMF_HAS_QOS)" qosDynamic="0" qosRate="1" qosTimeliness="1" dataSize="0"> <key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="INVALIDRIC"/> <dataBody> </dataBody> </requestMsg> sendOpenRequest():
Writing open of size 33.
<!-- rwfMajorVer="14" rwfMinorVer="0" -->
<statusMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x28 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_STATE)" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_CLOSED" code="RSSL_SC_NONE" text="<NOT_ENTITLED: Request not allowed. Account is not entitled for namespace 'test'.>" dataSize="0"> <key flags="0x7 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE)" serviceId="1" name="INVALIDRIC" nameType="1"/> <dataBody> </dataBody> </statusMsg>
So the "error" message is sent by the profider but will not show up in rmdstestclient.
I wonder if we do send the correct containerType, dataState, streamState, flag etc.. or am I missing something, or is this a normal behavior of the rmdstestclient.
Thanks in advance.
You can get rmdstestclient to output any Status messages to the console by enabling the interval Statistics display - which outputs stats for update rates, images received etc
rmdstestclient -S ELEKTRON_DD -f vodrics -h ads1 -p 14002 -ct rssl -u umer.nalla -I 1 -l log.out
The above will log the data and output statistics every 1 second - and this will include any statusmsgs received .
The relevant parameter is '-I 1' - capital letter i and 1 for the interval.
The above gives me the following output:
...... Received Enum Dictionary refresh message (Data Length: 126428). updr 0.00 updl 0 imgr 0.00 imgl 0 Status Received <1> Status Text: Closed Status for Item VOD.L Text: The record could not be found updr 0.00 updl 0 imgr 0.00 imgl 0 .......
A Status Msg is an event just like a data event, so it is logged to the file like the other events - it is not an Error message - as technically there is no application level error situation.
You are using the application to connect to a server and establish event streams for various items by requesting them from the server. If the server rejects a particular request it returns a Status event for that particular stream and closes the stream.
In a normal consumer application, the developer would have a Status msg / event handler and act on the Status accordingly .e.g. log to a file or inform the user and so on.
Thanks for your quick response @Umer Nalla.
So if I understand you correctly, it is a normal behavior that the status msg (rejection of the invalid instrument) is not shown in the rmdstestclient application itself and only appears in the log, right?