/// <summary> /// 启动服务 /// </summary> /// <param name="fileName">文件名</param> public static void StartService() { ReadPlots(); m_userCookieService = new UserCookieService(); m_exportService = new ExportService(); m_userSecurityService = new UserSecurityService(); m_eMSecurityService = new EMSecurityService(); bool loadAll = EMSecurityService.Load(); //BlockService.Load(loadAll); CFTService.Start(); SecurityService.Start(); }
protected override bool DecodingBody(BinaryReader br) { byte market = br.ReadByte(); byte[] buffer = br.ReadBytes(0x10); byte[] srcCode = new byte[7]; for (int i = 0; i < srcCode.Length; i++) { srcCode[i] = buffer[i]; } String emcode = ConvertCode.ConvertIntToCode((uint)ConvertCode.ConvertCodeToInt(srcCode, market)); switch (market) { case 8: { emcode = ConvertCode.ConvertFuturesCftEmCodeToOrgEmCode(emcode); break; } } if (DetailData.EmCodeToUnicode.ContainsKey(emcode)) { this.Code = DetailData.EmCodeToUnicode[emcode]; } else { return(false); } br.ReadBytes(4); float fieldValue = br.ReadSingle(); float num5 = br.ReadSingle(); switch (DataCenterCore.CreateInstance().GetMarketType(this.Code)) { case MarketType.TB_NEW: case MarketType.TB_OLD: if (fieldValue >= 900000f) { fieldValue = 0f; } if (num5 < 0f) { num5 = 0f; } break; } DetailData.FieldIndexDataSingle[this.Code][FieldIndex.UpLimit] = fieldValue; DetailData.FieldIndexDataSingle[this.Code][FieldIndex.DownLimit] = num5; CFTService.CallBack(FuncTypeRealTime.LimitedPrice, fieldValue.ToString() + num5.ToString()); return(true); }
void PushSendDataPacket() { while (true) { DataPacket dataPacket = null; lock (_sendDataPacketQueue) { if (_sendDataPacketQueue.Count > 0) { dataPacket = _sendDataPacketQueue.Dequeue(); } } try { if (dataPacket != null) { using (MemoryStream memoryStream = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(memoryStream)) { int len = dataPacket.CodePacket(bw); if (dataPacket is RealTimeDataPacket) { switch (((RealTimeDataPacket)dataPacket).RequestType) { case FuncTypeRealTime.StatisticsAnalysis: if (String.IsNullOrEmpty((dataPacket as ReqStatisticsAnalysisDataPacket).Url)) { break; } String url = StatisticAnalyUrl + (dataPacket as ReqStatisticsAnalysisDataPacket).Url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.BeginGetResponse(new AsyncCallback(OnResponse), request); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.Heart: byte[] bytes = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; CFTService.Send(TcpService.SSHQ, bytes); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); _dataQuery.QueryQuote(TcpService.LSHQ, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.IndexDetail: case FuncTypeRealTime.StockDetail: case FuncTypeRealTime.StockDetailLev2: case FuncTypeRealTime.StockTrend: case FuncTypeRealTime.StockTrendPush: case FuncTypeRealTime.StockTrendAskBid: case FuncTypeRealTime.StockTrendInOutDiff: case FuncTypeRealTime.IndexFuturesTrend: case FuncTypeRealTime.RedGreen: case FuncTypeRealTime.StockDict: case FuncTypeRealTime.DealSubscribe: case FuncTypeRealTime.DealRequest: case FuncTypeRealTime.BlockOverViewList: case FuncTypeRealTime.BlockSimpleQuote: case FuncTypeRealTime.BlockIndexReport: case FuncTypeRealTime.SectorQuoteReport: case FuncTypeRealTime.BlockQuoteReport: case FuncTypeRealTime.CapitalFlow: case FuncTypeRealTime.PriceStatus: case FuncTypeRealTime.Rank: case FuncTypeRealTime.TickTrade: case FuncTypeRealTime.OrderDetail: case FuncTypeRealTime.OrderQueue: case FuncTypeRealTime.ShortLineStrategy: case FuncTypeRealTime.ContributionStock: case FuncTypeRealTime.ContributionBlock: case FuncTypeRealTime.IndexFuturesDetail: case FuncTypeRealTime.MinKLine: case FuncTypeRealTime.LimitedPrice: CFTService.Send(TcpService.SSHQ, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.AllOrderStockDetailLevel2: case FuncTypeRealTime.StockDetailOrderQueue: case FuncTypeRealTime.NOrderStockDetailLevel2: if (dataPacket.IsPush) { if ( _pushPackets.ContainsKey((int)((RealTimeDataPacket)dataPacket).RequestType)) { DataPacket tmp = _pushPackets[(int)((RealTimeDataPacket)dataPacket).RequestType]; tmp.IsPush = false; using (MemoryStream memoryStream1 = new MemoryStream()) { using (BinaryWriter bw1 = new BinaryWriter(memoryStream1)) { tmp.CodePacket(bw1); CFTService.Send(TcpService.SSHQ, memoryStream1.ToArray()); Debug.Print("SendPacket cancel " + ((RealTimeDataPacket)dataPacket).RequestType); } } } _pushPackets[((int)((RealTimeDataPacket)dataPacket).RequestType)] = dataPacket; CFTService.Send(TcpService.SSHQ, memoryStream.ToArray()); Debug.Print("SendPacket request " + ((RealTimeDataPacket)dataPacket).RequestType); } else { if ( _pushPackets.ContainsKey( (int)((RealTimeDataPacket)dataPacket).RequestType)) { _pushPackets.Remove( (int)((RealTimeDataPacket)dataPacket).RequestType); } CFTService.Send(TcpService.SSHQ, memoryStream.ToArray()); Debug.Print("SendPacket cancel " + ((RealTimeDataPacket)dataPacket).RequestType); } break; case FuncTypeRealTime.TrendCapitalFlow: //using (FileStream fs = new FileStream("d:\\trendCaptial.txt", FileMode.Create)) //{ // byte[] data = memoryStream.ToArray(); // fs.Write(data, 0, data.Length); // fs.Close(); //} CFTService.Send(TcpService.SSHQ, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.HisTrend: case FuncTypeRealTime.HisKLine: case FuncTypeRealTime.ReqF10: case FuncTypeRealTime.HisTrendlinecfs: case FuncTypeRealTime.CapitalFlowDay: _dataQuery.QueryQuote(TcpService.LSHQ, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.InitLogon: CFTService.Send(TcpService.SSHQ, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; case FuncTypeRealTime.OceanHeart: case FuncTypeRealTime.OceanRecord: case FuncTypeRealTime.OceanTrend: _dataQuery.QueryQuote(TcpService.WPFW, memoryStream.ToArray()); Debug.Print("SendPacket " + ((RealTimeDataPacket)dataPacket).RequestType); break; } } else if (dataPacket is OrgDataPacket) { switch (((OrgDataPacket)dataPacket).RequestType) { case FuncTypeOrg.HeartOrg: _dataQuery.QueryQuote(TcpService.JGFW, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); _dataQuery.QueryQuote(TcpService.DPZS, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); break; case FuncTypeOrg.BlockReport: case FuncTypeOrg.BlockIndexReport: case FuncTypeOrg.GlobalIndexReport: case FuncTypeOrg.EmIndexReport: case FuncTypeOrg.BlockStockReport: case FuncTypeOrg.HKStockReport: case FuncTypeOrg.FundStockReport: case FuncTypeOrg.BondStockReport: case FuncTypeOrg.FuturesStockReport: case FuncTypeOrg.IndexFuturesReport: case FuncTypeOrg.CustomReport: case FuncTypeOrg.InitReportData: case FuncTypeOrg.RateReport: case FuncTypeOrg.FinanceReport: case FuncTypeOrg.FinanceOrg: case FuncTypeOrg.DDEReport: case FuncTypeOrg.CapitalFlowReport: case FuncTypeOrg.NetInFlowReport: case FuncTypeOrg.ProfitForecastReport: case FuncTypeOrg.CustomDDEReport: case FuncTypeOrg.CustomCapitalFlowReport: case FuncTypeOrg.CustomNetInFlowReport: case FuncTypeOrg.CustomProfitForecastReport: case FuncTypeOrg.Rank: case FuncTypeOrg.NetInFlowRank: case FuncTypeOrg.OSFuturesReport: case FuncTypeOrg.OSFuturesReportNew: case FuncTypeOrg.OsFuturesLMEReport: case FuncTypeOrg.ForexReport: case FuncTypeOrg.USStockReport: case FuncTypeOrg.FinanceStockReport: case FuncTypeOrg.CustomFinanceStockReport: case FuncTypeOrg.BondPublicOpeartion: case FuncTypeOrg.ChangeName: _dataQuery.QueryQuote(TcpService.JGFW, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); break; case FuncTypeOrg.MonetaryFundDetail: case FuncTypeOrg.NonMonetaryFundDetail: case FuncTypeOrg.FundTrpAndSunDetail: case FuncTypeOrg.FundCIPMonetaryDetail: case FuncTypeOrg.FundCIPNonMonetaryDetail: case FuncTypeOrg.FundBFPDetail: case FuncTypeOrg.FundHeaveStockReport: case FuncTypeOrg.FundHYReport: case FuncTypeOrg.FundKeyBondReport: case FuncTypeOrg.FundManager: case FuncTypeOrg.FinanceHeaveFundReport: case FuncTypeOrg.FinanceHeaveStockReport: case FuncTypeOrg.FinanceHeaveHYReport: case FuncTypeOrg.FinanceHeaveBondReport: case FuncTypeOrg.FinanceHeaveManagerReport: case FuncTypeOrg.CNIndexDetail: case FuncTypeOrg.CSIIndexDetail: case FuncTypeOrg.CSIndexDetail: case FuncTypeOrg.GlobalIndexDetail: case FuncTypeOrg.InterBankDetail: case FuncTypeOrg.RateSwapDetail: case FuncTypeOrg.InterBankRepurchaseDetail: case FuncTypeOrg.ShiborDetail: case FuncTypeOrg.TrendOrgDP: case FuncTypeOrg.MinKLineOrgDP: case FuncTypeOrg.LowFrequencyTBY: case FuncTypeOrg.BankBondReport: case FuncTypeOrg.ShiborReport: _dataQuery.QueryQuote(TcpService.DPZS, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); break; case FuncTypeOrg.DepthAnalyse: case FuncTypeOrg.EMIndexDetail: case FuncTypeOrg.MinKLineOrg: case FuncTypeOrg.TrendOrg: case FuncTypeOrg.IndexStatic: case FuncTypeOrg.USStockDetail: case FuncTypeOrg.OSFuturesDetail: case FuncTypeOrg.ForexDetail: case FuncTypeOrg.ConvertBondDetail: case FuncTypeOrg.NonConvertBondDetail: case FuncTypeOrg.OSFuturesLMEDetail: case FuncTypeOrg.OSFuturesLMEDeal: case FuncTypeOrg.NewProfitForcast: _dataQuery.QueryQuote(TcpService.GPZS, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); break; case FuncTypeOrg.TradeDate: case FuncTypeOrg.HisKLineOrg: case FuncTypeOrg.FundKlineAfterDivide: case FuncTypeOrg.DivideRightOrg: _dataQuery.QueryQuote(TcpService.JGLS, memoryStream.ToArray()); Debug.Print("SendPacket " + ((OrgDataPacket)dataPacket).RequestType); break; } } else if (dataPacket is InfoOrgBaseDataPacket) { _queryConnnection.DoSendPacket( ((InfoOrgBaseDataPacket)dataPacket).CodeInfoPacket(), dataPacket.MsgId); Debug.Print("SendPacket " + ((InfoOrgBaseDataPacket)dataPacket).RequestId); } else if (dataPacket is IndicatorDataPacket) { IndicatorDataPacket iPacket = dataPacket as IndicatorDataPacket; _indicatorQueryConnectiuon.DoSendPacket(iPacket.CreateCommand(), dataPacket.MsgId); Debug.Print("SendPacket " + ((IndicatorDataPacket)dataPacket).RequestId); } } } } } catch (Exception e) { Debug.Print(e.Message); } Thread.Sleep(2); } }