question

Upvotes
Accepted
3 3 4 7

Assistance on Reuter fields and other parameters

Thanks for reply on "Assistance on C# .Net technology for integration".

As per the suggestion for FID and their respective fields , I refer the "RDMFieldDictionary". So as per my understanding I did the mapping of FID against field name. Please confirm it.

FIDField Name6LAST11NET CHANGE22BID25ASK30BID SIZE31ASK SIZE267ASK TIME

Also One more query is , what is purpose of "BatchReissueTime" ,"BatchCloseTime" and "runTimeInSeconds". Are these mandatory fields.

Thanks,

Vaibhav Korade.

treprfarfa-apic#
icon clock
10 |1500

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

1 Answer

Upvotes
Accepted
11.3k 25 8 13

Hi @vaibhav.korade

The StarterConsumer_BatchView is an example application created to demonstrate how to implement RFA to request data using Batch and View features of RFA. The View feature allow an application to filter the set of fields the application will receive. Currently, the feature supports only field id specified in Request message.

If you want to use a list of field name as input, you can modify the application to read a Iist of field name and then convert the field name to field id before passing the converted Field ID on a item request message. The RDMFieldDictionary class of RFA provides method to convert field ID to field name or vise versa.

Below is the code modified from the StarterConsumer_BatchView to accept list of field name instead of field ID.

The code works with the following configuration.

\batchItemList1_ViewFIDs= "TRDPRC_1,NETCHNG_1,BID,ASK,BIDSIZE,ASKSIZE,ASK_TIME"

long SendBatchRequest(List<RFA_String> strList, List<RFA_String> viewFieldIdList, ReqType reqType, string listValue)
...
    if (viewFieldCount > 0)
    {
        ...

        //Encode the ViewData
        element.Clear();
        elementData.Clear();
        arrWIt.Start(elementData);

        for (int i = 0; i < viewFieldCount; i++)
        {
            dataBuffer.Clear();
            arrayEntry.Clear();
            //Modification start
            //Get RDMFieldDictionary from Decoder class.
            RDM.RDMFieldDictionary dictionary = decoder.RDMFieldDict;

            try
            {
		//Get Field definition from the RDMFieldDictionary
                RDM.RDMFidDef rdmFidDef = dictionary.GetFidDef(viewFieldIdList[i]);
                if (rdmFidDef != null)
                {
                    dataBuffer.SetInt(rdmFidDef.FieldId,DataBuffer.DataBufferEnum.Int);
                }
            }
            catch (InvalidUsageException)
            {
                //FID is not found
            }
	    //Remove the previous code.
            //dataBuffer.SetFromString(viewFieldIdList[i], DataBuffer.DataBufferEnum.Int);
            //Modification end
            arrayEntry.Data = dataBuffer;
            arrWIt.Bind(arrayEntry);
        }
        arrWIt.Complete();
        ...
    }

Regarding to the "BatchReissueTime" ,"BatchCloseTime" and "runTimeInSeconds" parameters, these parameters are the application's configuration, not RFA's. The "BatchReissueTime" and "BatchCloseTime" are used for specifying time to send batch reissue request and batch close request respectively. These are other features which are not related to your requirement. You can find more information about these features in the RFA Developers Guide document.

The "runTimeInSeconds" is time to run the application in seconds. 0 means unlimited. The application will terminate after the specified time.

You can find descriptions of other application's parameters in the ReadMe.txt file.

icon clock
10 |1500

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

Click below to post an Idea Post Idea