private static RequestItemField ProcessOverrides(RequestItem ri, string overrides) { // Overrides come in the form "FieldName[fieldName,fieldValue,fieldName,fieldValue]" // with as many name/value pairs within the brackets as required int start = overrides.IndexOf("["); // The last character will be the ] if (!overrides.EndsWith("]")) { throw new Exception("Override fields passed to ProcessOverrides() that didn't end with ]"); } RequestItemField ret = new RequestItemField(overrides.Substring(0, start)); string[] nameValues = overrides.Substring(start + 1, overrides.Length - start - 2).Split(','); for (int i = 0; i < nameValues.Length; i += 2) { string field = nameValues[i]; string value = nameValues[i + 1]; ret.OverrideFields.Add(new OverrideField(field, value)); } return(ret); }
private void AddBBfield(BloombergDataInstrument bdi, RequestItemField Field, int id) { // Ignore duplicate field names if (!bdi.BBFields.ContainsKey(Field.Key)) { BloombergDataInstrumentField field = new BloombergDataInstrumentField(Field.Key); field.ID = id; foreach (OverrideField oField in Field.OverrideFields) { field.FieldOverrides.Add(oField.Name, oField.Value); } bdi.BBFields.Add(Field.Key, field); } }
internal static void AddFieldFromFieldList(RequestItem ri) { switch (ri.RequestType) { case BloombergDataInstrument.eRequestType.IntraDayBar: case BloombergDataInstrument.eRequestType.IntraDayTick: if (_intraDayEventTypeFields.Count == 0) { _intraDayEventTypeFields.Add("bid", true); _intraDayEventTypeFields.Add("ask", true); _intraDayEventTypeFields.Add("trade", true); _intraDayEventTypeFields.Add("ask_best", true); _intraDayEventTypeFields.Add("bid_best", true); } break; } string fields = ri.BBFieldList; // Fields may be a single field or may be a comma seperated list // or they may contains Override fields within square brackets while (fields != "") { RequestItemField fld = null; int comma = fields.IndexOf(","); int bracket = fields.IndexOf("["); if (comma == -1 && bracket == -1) { // a lonesome field fld = new RequestItemField(fields); fields = ""; } else if (comma == -1) { // Just a bracket found int end = fields.IndexOf("]"); string overrides = fields.Substring(0, end + 1); fields = fields.Substring(end + 1); fld = ProcessOverrides(ri, overrides); } else if (bracket == -1) { // Just a comma found fld = new RequestItemField(fields.Substring(0, comma)); fields = fields.Substring(comma + 1); } else { // Both a bracket and commas, process in order. if (comma < bracket) { fld = new RequestItemField(fields.Substring(0, comma)); fields = fields.Substring(comma + 1); } else { int end = fields.IndexOf("]"); string overrides = fields.Substring(0, end + 1); fields = fields.Substring(end + 1); fld = ProcessOverrides(ri, overrides); } } if (ri.RequestType == BloombergDataInstrument.eRequestType.IntraDayBar && _intraDayEventTypeFields.ContainsKey(fld.Key)) { ri.EventType = fld.Key; } else { ri.riFields.Add(fld.Key, fld); } } }