//--------------------------called by excel just after entering formula RTD(xxxxx)-----------------------------------------// protected override object ConnectData(Topic topic, IList<string> topicInfo, ref bool newValues) { var alias = topicInfo[AliasPos]; var tab = topicInfo[TabPos]; var sym = topicInfo[SymPos]; var col = topicInfo[ColPos]; var his = topicInfo.Count > 4 ? topicInfo[HisPos] : null; var subscriptionId = 0; if (topicInfo.Count != 6 && sym.Equals(BackTick)) { return "Missing required parameters if using with back tick."; } if (topicInfo.Count == 6) { try { subscriptionId = Convert.ToInt32(topicInfo[SymbolIndetifier]); } catch (FormatException) { return "Input string is not a sequence of digits (last parameter)."; } } if (string.IsNullOrEmpty(tab)) { return "Table is missing."; } if (string.IsNullOrEmpty(sym)) { return "Symbol is missing."; } if (string.IsNullOrEmpty(col)) { return "Column is missing."; } if (sym.Equals(BackTick)) { if (Connections.ContainsKey(alias)) { if (!WildCardMapping.ContainsKey(alias) || (WildCardMapping.ContainsKey(alias) && !WildCardMapping[alias].GetTables().Contains(tab))) { RtdSubscribeTable(alias, tab); } } //add id to symbol's map AddEmptyId(alias, tab, subscriptionId.ToString(CultureInfo.InvariantCulture)); if (!WildCardMapping.ContainsKey(alias)) { var tm = new TopicMap(); WildCardMapping[alias] = tm; } WildCardMapping[alias].AddTopic(new TopicInfo(topic, alias, tab, subscriptionId.ToString(CultureInfo.InvariantCulture), col, his)); TryToFillFromCache(alias, tab, subscriptionId, col); } else { if (!Mapping.ContainsKey(alias) || !Mapping[alias].ContainsSymbol(tab, sym)) { if (Connections.ContainsKey(alias) && (!WildCardMapping.ContainsKey(alias) || (WildCardMapping.ContainsKey(alias) && !WildCardMapping[alias].GetTables().Contains(tab)))) { RtdSubscribe(alias, tab, sym); } } if (Mapping.ContainsKey(alias)) { Mapping[alias].AddTopic(new TopicInfo(topic, alias, tab, sym, col, his)); } else { var tm = new TopicMap(); tm.AddTopic(new TopicInfo(topic, alias, tab, sym, col, his)); Mapping[alias] = tm; } } newValues = true; return ExcelEmpty.Value; }
//--------------------------called by excel just after entering formula RTD(xxxxx)-----------------------------------------// protected override object ConnectData(Topic topic, IList <string> topicInfo, ref bool newValues) { var alias = topicInfo[AliasPos]; var tab = topicInfo[TabPos]; var sym = topicInfo[SymPos]; var col = topicInfo[ColPos]; var his = topicInfo.Count > 4 ? topicInfo[HisPos] : null; var subscriptionId = 0; if (topicInfo.Count != 6 && sym.Equals(BackTick)) { return("Missing required parameters if using with back tick."); } if (topicInfo.Count == 6) { try { subscriptionId = Convert.ToInt32(topicInfo[SymbolIndetifier]); } catch (FormatException) { return("Input string is not a sequence of digits (last parameter)."); } } if (string.IsNullOrEmpty(tab)) { return("Table is missing."); } if (string.IsNullOrEmpty(sym)) { return("Symbol is missing."); } if (string.IsNullOrEmpty(col)) { return("Column is missing."); } if (sym.Equals(BackTick)) { if (Connections.ContainsKey(alias)) { if (!WildCardMapping.ContainsKey(alias) || (WildCardMapping.ContainsKey(alias) && !WildCardMapping[alias].GetTables().Contains(tab))) { RtdSubscribeTable(alias, tab); } } //add id to symbol's map AddEmptyId(alias, tab, subscriptionId.ToString(CultureInfo.InvariantCulture)); if (!WildCardMapping.ContainsKey(alias)) { var tm = new TopicMap(); WildCardMapping[alias] = tm; } WildCardMapping[alias].AddTopic(new TopicInfo(topic, alias, tab, subscriptionId.ToString(CultureInfo.InvariantCulture), col, his)); TryToFillFromCache(alias, tab, subscriptionId, col); } else { if (!Mapping.ContainsKey(alias) || !Mapping[alias].ContainsSymbol(tab, sym)) { if (Connections.ContainsKey(alias) && (!WildCardMapping.ContainsKey(alias) || (WildCardMapping.ContainsKey(alias) && !WildCardMapping[alias].GetTables().Contains(tab)))) { RtdSubscribe(alias, tab, sym); } } if (Mapping.ContainsKey(alias)) { Mapping[alias].AddTopic(new TopicInfo(topic, alias, tab, sym, col, his)); } else { var tm = new TopicMap(); tm.AddTopic(new TopicInfo(topic, alias, tab, sym, col, his)); Mapping[alias] = tm; } } newValues = true; return(ExcelEmpty.Value); }