Exception Type='OmmInvalidUsageException' when using fixedWidth in view Array
Most likely something primitive, but I wanted to check our understanding:
when creating a view I thought it was a good practice to set the array size as fixed. It looks as if this is triggering an Exception OmmInvalidUsageException.
Please see below is an example of a simple snapshot request using a view array. Is this normal?
AppClient client; OmmConsumer consumer(OmmConsumerConfig().username("user"));
//Symbols
OmmArray symbolArray;
{
symbolArray.addAscii("EUR=");
symbolArray.complete();
}
//Fields
std::vector<thomsonreuters::ema::access::Int64> fields{11,12,13,22,25};
OmmArray viewArray;
//viewArray.fixedWidth(static_cast<thomsonreuters::ema::access::UInt16>(fields.size())); //With this line we are getting
//"Exception Type='OmmInvalidUsageException', Text='Unsupported fixedWidth encoding in addInt(). Fixed width='5'. '""
//If commented out everything seems to work fine. Is it normal?
for (auto f : fields)
{
viewArray.addInt(f);
}
viewArray.complete();
ElementList elemList;
elemList.addArray(thomsonreuters::ema::rdm::ENAME_BATCH_ITEM_LIST, symbolArray);
elemList.addUInt(thomsonreuters::ema::rdm::ENAME_VIEW_TYPE, 1);
elemList.addArray(thomsonreuters::ema::rdm::ENAME_VIEW_DATA, viewArray);
elemList.complete();
ReqMsg test;
//Just a snapshot
consumer.registerClient(ReqMsg().serviceName("hEDD").interestAfterRefresh(false).payload(elemList), client);
Best Answer
-
Hi @marian
fixedWidth() is not for the size of the array but for the length of each content inside.
By using fixedWidth(X) you basically define that content inside the array cannot be bigger than X bytes.
fixedWidth() is used for decoding optimization and can be omitted.
Edit: "each content"
0
Answers
-
Hi @marian
My apologies, It is the length of each content inside the array, not the entire content. I just misread the guide.
By using fixedWidth(2) you basically define that each content inside the array, in this case, the signed int, cannot be bigger than 2 byte, which is –32,768 to 32,767.
0 -
Thank you @Warat B. and apologies for following up on this, I just want to fully understand it.
In EMA/Src/Access/Include/DataType.h for Data::RealEnum which is used for price I read:
RealEnum = 8,/*!< An 8-byte precision (19-20 decimal places) fixed-placed representation
of a numeric with either a fractional or exponential part. The range of
a fractional part is 1/2 through 1/256. The range of an exponential
part is 10-14 through 10+7. */When creating a view with only best bid(fid=22) and best ask (fid=25) each element size is 8 bytes. So, why is it working with fixedWidth(2)?
0 -
Hi @marian
View request's array should be a signed int array.
Could you please show me the code?
This code should work:
.payload( ElementList().addUInt( ENAME_VIEW_TYPE, 1 ).
addArray( ENAME_VIEW_DATA, OmmArray().fixedWidth( 2 ).
addInt( 22 ).
addInt( 25 ).
complete() ).
complete() )But this won't:
.payload( ElementList().addUInt( ENAME_VIEW_TYPE, 1 ).
addArray(ENAME_VIEW_DATA, OmmArray().fixedWidth(2).
addReal(22, OmmReal::Exponent0Enum).
addReal(25, OmmReal::Exponent0Enum).
complete() ).
complete() )0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 370 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛