| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- //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
- // {
- // /// <summary>
- // /// 验证字符串
- // /// </summary>
- // private static readonly string _validateString = "0NDH6bf+zvHG99Hp1qTC6w==";
- // private static Dictionary<string, string> dicGoodsSort; //商品标志,商品组键值对。
- // #region Constructors
- // public static void Initialize()
- // {
- // }
- // /// <summary>
- // /// Initializes a new instance of the <see cref="QuoteSubscribeHelper"/> class.
- // /// </summary>
- // 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
- // /// <summary>
- // /// 执行与释放或重置非托管资源相关的应用程序定义的任务。
- // /// </summary>
- // public static void Dispose()
- // {
- // }
- // #endregion Public Static Methods
- // #region Private Static Methods
- // /// <summary>
- // /// 实时行情订阅回发事件
- // /// </summary>
- // /// <param name="sender">The source of the event.</param>
- // /// <param name="e">The <see cref="DatagramEventArgs"/> instance containing the event data.</param>
- // 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;
- // }
- // }
- // /// <summary>
- // /// Updates the source.
- // /// </summary>
- // /// <param name="quotes">The quotes.</param>
- // private static void UpdateQuoteGoodses(QuoteTik[] quotes)
- // {
- // var quoteList = quotes.ToQuoteGoodsList();
- // if (quoteList == null || !quoteList.Any()) return;
- // var tempGoodses = new List<QuoteGoods>();
- // 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<List<QuoteGoods>>(tempGoodses,
- // MessengerTokens.ReceiveRealTimeQuote);
- // }
- // /// <summary>
- // /// 设置商品的分组
- // /// </summary>
- // /// <param name="datagram"></param>
- // private static void SetGoodsSorts(Datagram datagram)
- // {
- // string xml = MessageDataResolver.FromDatagram(datagram);
- // XmlDataSet pRs = MessageDataResolver.ToXmlDataSet(xml);
- // dicGoodsSort = new Dictionary<string, string>(); //商品标志,商品组键值对。
- // 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];
- // }
- // }
- // }
- // /// <summary>
- // /// 订阅行情
- // /// </summary>
- // 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
- // }
- //}
|