//using Muchinfo.Communication; //using Muchinfo.Messages; //using Muchinfo.MTPClient.Data.Enums; //using Muchinfo.MTPClient.Data.Model; //using Muchinfo.MTPClient.Infrastructure.Cache; //using Muchinfo.MTPClient.Infrastructure.EntityHelpers; //using Muchinfo.MTPClient.Infrastructure.LinkProxy; //using Muchinfo.MTPClient.Infrastructure.Utilities; //using Muchinfo.Quote; //using System.Collections.Generic; //using System.Linq; //using System.Text; //namespace Muchinfo.MTPClient.UI.Utilities //{ // public class QuoteSubscribeHelper // { // /// // /// 验证字符串 // /// // private static readonly string _validateString = "0NDH6bf+zvHG99Hp1qTC6w=="; // private static Dictionary dicGoodsSort; //商品标志,商品组键值对。 // #region Constructors // public static void Initialize() // { // } // /// // /// Initializes a new instance of the class. // /// // public static void InitializeProxy() // { // //组验证包 // var validDatagram = new Datagram { Tag = 33, Tag2 = 999 }; // Encoding encoding = Encoding.GetEncoding("GB2312"); // validDatagram.SetData(encoding.GetBytes(_validateString)); // var client = LinkManager.Instance.QuotationTcpLinkProxy; // if (client == null) return; // client.DatagramRecieved -= QuoteClient_DatagramReceived; // client.DatagramRecieved += QuoteClient_DatagramReceived; // client.Send(validDatagram); // } // #endregion Constructors // #region Methods // #region Public Static Methods // /// // /// 执行与释放或重置非托管资源相关的应用程序定义的任务。 // /// // public static void Dispose() // { // } // #endregion Public Static Methods // #region Private Static Methods // /// // /// 实时行情订阅回发事件 // /// // /// The source of the event. // /// The instance containing the event data. // private static void QuoteClient_DatagramReceived(object sender, DatagramEventArgs e) // { // var message = (PrimaryFunction)e.Datagram.Tag; // switch (message) // { // case PrimaryFunction.Quote: // { // var realTimeProxy = LinkManager.Instance.QuotationTcpLinkProxy; // if (realTimeProxy == null) return; // byte[] buffer = realTimeProxy.Resolver.ToByteArray(e.Datagram); // UpdateQuoteGoodses(QuoteConverter.FromBuffer(buffer)); // } // break; // case PrimaryFunction.Query: // SetGoodsSorts(e.Datagram); // break; // } // } // /// // /// Updates the source. // /// // /// The quotes. // private static void UpdateQuoteGoodses(QuoteTik[] quotes) // { // var quoteList = quotes.ToQuoteGoodsList(); // if (quoteList == null || !quoteList.Any()) return; // var tempGoodses = new List(); // foreach (var realTimeGoods in quoteList) // { // var quoteGoods = // CacheManager.CacheGoodsBaseInfos.FirstOrDefault( // (goods) => // goods.ExchangeCode == realTimeGoods.ExchangeCode && // goods.GoodsCode.ToUpper() == realTimeGoods.GoodsCode.ToUpper()); // if (quoteGoods == null) continue; // quoteGoods.UpdateFrom(realTimeGoods); // tempGoodses.Add(quoteGoods); // } // ////发送实时行情消息 // ApplicationParameter.QuotationMessenger.Send>(tempGoodses, // MessengerTokens.ReceiveRealTimeQuote); // } // /// // /// 设置商品的分组 // /// // /// // private static void SetGoodsSorts(Datagram datagram) // { // string xml = MessageDataResolver.FromDatagram(datagram); // XmlDataSet pRs = MessageDataResolver.ToXmlDataSet(xml); // dicGoodsSort = new Dictionary(); //商品标志,商品组键值对。 // foreach (var item in pRs[0]) // { // string goodsCode = string.Empty; // if (item.Contains("SecCode") && // !string.IsNullOrEmpty(item["SecCode"].Value.ToString()) && // item["SecCode"].Value.ToString() != "N/A") // { // goodsCode = item["SecCode"].Value.ToString(); // var zeroIndex = goodsCode.IndexOf('\0', 0); // if (zeroIndex > 0) // { // goodsCode = goodsCode.Substring(0, zeroIndex); // } // } // string exchange = string.Empty; // if (item.Contains("Exchange") && // !string.IsNullOrEmpty(item["Exchange"].Value.ToString()) && // item["Exchange"].Value.ToString() != "N/A") // { // exchange = item["Exchange"].Value.ToString(); // } // string goodsgroup = "0"; // if (item.Contains("Sort") && // !string.IsNullOrEmpty(item["Sort"].Value.ToString()) && // item["Sort"].Value.ToString() != "N/A") // { // goodsgroup = item["Sort"].Value.ToString(); // } // string symbol = exchange.PadLeft(3, ' ') + goodsCode.PadLeft(6, ' ').ToUpper(); // dicGoodsSort[symbol] = goodsgroup; // } // foreach (var qouteGoods in CacheManager.CacheGoodsBaseInfos) //设置商品组 // { // if (dicGoodsSort.ContainsKey(qouteGoods.Symbol.ToUpper())) // { // qouteGoods.Sort = dicGoodsSort[qouteGoods.Symbol]; // } // } // } // /// // /// 订阅行情 // /// // public static void QuoteSubscribe() // { // var goodsList = CacheManager.CacheGoodsBaseInfos; // var client = LinkManager.Instance.QuotationTcpLinkProxy; // if (client == null) return; // var datagram = new Datagram // { // Tag = (byte)PrimaryFunction.QuoteHistory, // Tag2 = (ushort)QuoteHistoryMessage.Subscribe // }; // var bytes = !goodsList.Any() ? null : goodsList.ToList().ToQuoteDatagramBytes(); // datagram.SetData(bytes); // client.Send(datagram); // if (dicGoodsSort != null) // { // foreach (var qouteGoods in CacheManager.CacheGoodsBaseInfos) //设置商品组 // { // if (dicGoodsSort.ContainsKey(qouteGoods.Symbol.ToUpper())) // { // qouteGoods.Sort = dicGoodsSort[qouteGoods.Symbol]; // } // } // } // } // #endregion Private Static Methods // #endregion Methods // } //}