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,

Tagged:

Best Answer

  • 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;
    }