We have an older API we use for pushing prices to Reuters using the old MarketLink infrastructure and are moving to the ContributionChannel infrastructure. We use the rfanet8.2.1.L2 library
When testing the new infrastructure we are getting the error
PostMsg has not have container type of RSSL_DT_MSG
Using the trace logging our container type is RSSL_DT_FIELD_LIST
<postMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="1" containerType="RSSL_DT_FIELD_LIST" flags="0x166 (RSSL_PSMF_HAS_POST_ID|RSSL_PSMF_HAS_MSG_KEY|RSSL_PSMF_POST_COMPLETE|RSSL_PSMF_ACK|RSSL_PSMF_HAS_PART_NUM)" postId="3" partNum="0" postUserId="40676" postUserAddr="10.141.152.100" dataSize="8">
<key flags="0x7 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE)" serviceId="9" name="TEST01=CIBL" nameType="1"/>
<dataBody>
<fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)">
<fieldEntry fieldId="22" data="0C64"/>
</fieldList>
</dataBody>
</postMsg>
This is the psuedo code we're using to generate the POST message. It's a test with hard coded values. We've also tried creating the FieldList with a FieldListWriteIterator. Which seems to produces the same results.
AttribInfo attribInfo = new AttribInfo();
attribInfo.NameType = RDM.INSTRUMENT_NAME_TYPES.INSTRUMENT_NAME_RIC;
attribInfo.Name = new RFA_String("TEST01=CIBL");
attribInfo.ServiceName = new RFA_String(_reutersService.ServiceName);
PostMsg postMessage = new PostMsg();
postMessage.IndicationMask = PostMsg.IndicationMaskFlag.MessageInit |
PostMsg.IndicationMaskFlag.MessageComplete;
if (requestAck)
{
postMessage.IndicationMask = (byte)(postMessage.IndicationMask | PostMsg.IndicationMaskFlag.WantAck);
}
postMessage.PostID = _postId;
postMessage.AttribInfo = attribInfo;
postMessage.MsgModelType = RDM.MESSAGE_MODEL_TYPES.MMT_MARKET_PRICE;
;
SingleWriteIterator swIt = new SingleWriteIterator();
FieldList fieldList = new FieldList();
FieldEntry fieldEntry = new FieldEntry();
swIt.Initialize(fieldList);
swIt.Start(fieldList);
fieldEntry.FieldID = 22;
swIt.Bind(fieldEntry);
swIt.SetReal(100, MagnitudeTypeEnum.ExponentNeg2);
swIt.Complete();
postMessage.Payload = fieldList;
I can't find any reference to the ContainerType in the docs or in the library. How do we set this value? and what is the difference between RSSL_DT_FIELD_LIST & RSSL_DT_MSG?
Thanks
Andrew