question

Upvotes
Accepted
3 0 0 5

Initial response for RFA

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,

treprfarfa-apibatch
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Upvotes
Accepted
9.6k 10 6 7

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;
  }
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.