Hi, so I'm subscribing to RFA and we make a batch request for a particular option for different exchanges. And then we start getting quote for each RIC of that contract. For the first initial quote of each RIC, I think we have
((msg.getMsgType() == OMMMsg.MsgType.REFRESH_RESP)
&& (msg.isSet(OMMMsg.Indication.REFRESH_COMPLETE)
&& (msg.isSet(OMMMsg.Indication.CLEAR_CACHE)))) = true
Now I'm wondering if we get any message that will indicate the initial snapshots of all the RICS of the batch is completed.
Thanks,
Hello @magno.yu
When an application requests a RIC, the successful result(refresh message) or failed result(status message e.g. no permission or RIC not found) is returned to the application. This is initial response. To verify if initial responses of all RICs in a batch request are returned, one possible way is to check if the number of refresh messages plus the number of status messages equals the number of RICs.
The example snipped source code of RFA Java application below shows how to verify if initial responses of all level1/MARKET_PRICE RICs in a batch request are returned:
//the number of initial response the application receive currently. int numInitialResponse =0; //the number of RICs the application subscribes int numRIC = 3; //a flag if the application has received all initial responses or not boolean receivedAllresponse = false; … //when process events //successful result if(respMsg.getMsgType() == OMMMsg.MsgType.REFRESH_RESP && respMsg.getMsgModelType() == RDMMsgTypes.MARKET_PRICE && respMsg.isSet(OMMMsg.Indication.REFRESH_COMPLETE) ) { ++numInitialResponse; System.out.println("Successful subscribing of a RIC named " +respMsg.getAttribInfo().getName() ); } //failed result else if(respMsg.getMsgModelType() == RDMMsgTypes.MARKET_PRICE && respMsg.getMsgType() == OMMMsg.MsgType.STATUS_RESP) { ++numInitialResponse; System.out.println("Failed subscribing of a RIC named " +respMsg.getAttribInfo().getName() + " with state=" + respMsg.getState()); } //verify if number of results equals number of RICs if(numInitialResponse==numRIC && !receivedAllresponse) { System.out.println("Received all initial responses!!!"); receivedAllresponse = true; }