private void EncodeMarketPriceFieldListEx(FieldList fieldList, bool refresh, List fidArr) { int fidsCount = fidArr.Count; if (fidsCount == 0) { return; } Random random = new Random(); FieldListWriteIterator fieldListWIt = new FieldListWriteIterator(); fieldList.Clear(); if (refresh) { fieldList.SetInfo(DICT_ID, FIELD_LIST_ID); } fieldListWIt.Start(fieldList); FieldEntry field = new FieldEntry(); DataBuffer dataBuffer = new DataBuffer(); for (int index = 0; index < fidsCount; ++index) { field.Clear(); dataBuffer.Clear(); field.FieldID = fidArr[index]; switch (fidArr[index]) { case 2: // RDNDISPLAY field { dataBuffer.UInt = 100; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 4: // RDN_EXCHID field { dataBuffer.Enumeration = 155; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 6:// TRDPRC_1 field { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.ExponentNeg2; real.Value = priceVal++; // increment the trd price dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 11: // NETCHNG_1 { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.Exponent0; real.Value = BidSize++; dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 22: // Setup BID field { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.ExponentNeg2; real.Value = priceVal - 2; // provide bid price dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 25: // Setup ASK field { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.ExponentNeg2; real.Value = priceVal + 2; // provide ask price dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 30: // Bid size { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.Exponent0; real.Value = BidSize++; dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 31: // Ask Size { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.Exponent0; real.Value = BidSize - 1; dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 32: // Setup ACVOL_1 field { RFA.Data.Real real = new RFA.Data.Real(); real.MagnitudeType = MagnitudeTypeEnum.Exponent0; real.Value = 100000; dataBuffer.Real = real; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 38: // Setup DIVIDEND_DATE field { Date date = new Date(); date.Day = 10; date.Month = 12; date.Year = 2005; dataBuffer.Date = date; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 118: // Price code { dataBuffer.Enumeration = 32; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 267: // setup ASK_TIME field { Time rfaTime = new Time(); rfaTime.Hour = (byte)(random.Next(12)); rfaTime.Minute = (byte)(random.Next(60)); rfaTime.Second = (byte)(random.Next(60)); dataBuffer.Time = rfaTime; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 293: // BID MMID 1 { RFA_String BidStr = new RFA_String("Bid MMID data"); dataBuffer.SetFromString(BidStr, DataBuffer.DataBufferEnum.StringRMTES); field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 296: // Ask MMID 1 { RFA_String AskStr = new RFA_String("Ask MMID data"); dataBuffer.SetFromString(AskStr, DataBuffer.DataBufferEnum.StringRMTES); field.Data = dataBuffer; fieldListWIt.Bind(field); break; } case 1025: // QUOTIM { Time rfaTime = new Time(); rfaTime.Hour = (byte)(random.Next(12)); rfaTime.Minute = (byte)(random.Next(60)); rfaTime.Second = (byte)(random.Next(60)); dataBuffer.Time = rfaTime; field.Data = dataBuffer; fieldListWIt.Bind(field); break; } default: AppUtil.Log(AppUtil.LEVEL.WARN, string.Format("Encoder.EncodeMarketPriceFieldListEx() Consumer requested unsupported FID = {0}\r\n", fidArr[index])); break; } } fieldListWIt.Complete(); }