//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
// }
//}