Best practice for accessing known fields

anthony.leon
Explorer
in RFA
I am migrating from TibMsg to OMM. Our application just needs numerical data (e.g. BID, ASK). So being new to
OMM I would like you advice.
- Is there a more direct method to get fields?
- Considering that I know the field and data type in advance, is the code below too defensive? Not defensive
enough?
public void processEvent(Event event) {
if (event.getType() == Event.COMPLETION_EVENT) {
log.info("Receive a COMPLETION_EVENT, "+ event.getHandle());
return;
}
if (event.getType() != Event.OMM_ITEM_EVENT) {
log.warning("Received an unsupported Event type.");
mainApp.disconnect();
return;
}
OMMItemEvent ie = (OMMItemEvent) event;
OMMMsg respMsg = ie.getMsg();
if (respMsg.getDataType() != OMMTypes.NO_DATA) {
OMMData ommPayload = respMsg.getPayload();
if (ommPayload.getType() == OMMTypes.FIELD_LIST) {
OMMFieldList ommFieldList = (OMMFieldList) ommPayload;
int dictId = ommFieldList.getDictId();
FieldDictionary fd = GenericOMMParser.getDictionary(dictId);
for (Iterator<OMMEntry> it = ommFieldList.iterator(); it.hasNext(); ) {
OMMEntry ommEntry = it.next();
if (ommEntry.getType() == OMMTypes.FIELD_ENTRY) {
OMMFieldEntry ommFieldEntry = (OMMFieldEntry) ommEntry;
FidDef fidDef = fd.getFidDef(ommFieldEntry.getFieldId());
String field = fidDef.getName();
if (field.equals("BID") || field.equals("ASK")) {
OMMData actualData = ommFieldEntry.getData(fidDef.getOMMType());
double d = ((OMMNumeric) actualData).toDouble();
System.out.printf("Field [%1$s] Value [%2$f]\n", field, d); }
} // field_entry
} // iterator
} // field list
} // no_data
}
0
Best Answer
-
I've tried the code and it worked well. This is a typical and direct way to retrieve fields in OMM so I don't think there is a more direct way for this. And, I don't see any need to perform further defensive type checking - it was sufficient for the task.
0
Answers
-
If not using a "dynamic view" one can see a performance improvement by breaking out from the field enumeration once all desired fields have been extracted.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 687 Datastream
- 1.4K DSS
- 623 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 557 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 276 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 682 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 105 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 91 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛