/// <summary> /// SetData /// </summary> /// <param name="dataPacket"></param> public override void SetData(DataPacket dataPacket) { if (dataPacket is ResOrgRateDataPacket) { ResOrgRateDataPacket packet = (ResOrgRateDataPacket)dataPacket; if (packet.RateData.Code != 0) { if (OrgRateDatas.ContainsKey(packet.RateData.Code)) { OrgRateDatas[packet.RateData.Code] = packet.RateData; } else { OrgRateDatas.Add(packet.RateData.Code, packet.RateData); } } } else if (dataPacket is ResInfoRateOrgDataPacket) { ResInfoRateOrgDataPacket packet = (ResInfoRateOrgDataPacket)dataPacket; InfoRateOrgData[packet.Code] = packet.InfoRateOrgList; } }
/// <summary> /// 异步接收数据 /// </summary> /// <param name="response"></param> public void SendDataCallBack(MessageEntity response) { if (response.MsgBody is byte[]) { InfoOrgBaseDataPacket dataPacket = null; using (MemoryStream ms = new MemoryStream(response.MsgBody as byte[])) { lock (ms) { using (BinaryReader br = new BinaryReader(ms)) { FuncTypeInfoOrg requestId = (FuncTypeInfoOrg)br.ReadByte(); switch (requestId) { case FuncTypeInfoOrg.InfoMineOrg: dataPacket = new ResInfoOrgDataPacket(); break; case FuncTypeInfoOrg.News24H: dataPacket = new ResNews24HOrgDataPacket(); break; case FuncTypeInfoOrg.ProfitForecast: dataPacket = new ResProfitForecastOrgDataPacket(); break; case FuncTypeInfoOrg.ImportantNews: dataPacket = new ResImportantNewsDataPacket(); break; case FuncTypeInfoOrg.NewsFlash: dataPacket = new ResNewsFlashDataPacket(); break; case FuncTypeInfoOrg.OrgRate: dataPacket = new ResInfoRateOrgDataPacket(); break; case FuncTypeInfoOrg.ResearchReport: dataPacket = new ResResearchReportOrgDataPacket(); break; case FuncTypeInfoOrg.NewInfoMineOrg: dataPacket = new ResNewInfoOrgDataPacket(); break; case FuncTypeInfoOrg.InfoMineOrgByIds: dataPacket = new ResInfoOrgByIdsDataPacket(); break; } if (dataPacket != null) { dataPacket.RequestId = requestId; if (_dicMsgId.ContainsKey((String)response.Tag)) { dataPacket.MsgId = _dicMsgId[(String)response.Tag]; LogUtilities.LogMessage("收到响应, id=" + (String)response.Tag + ", msgId=" + dataPacket.MsgId); lock (_dicMsgId) _dicMsgId.Remove((String)response.Tag); } dataPacket.Decoding(br); } } } } if (dataPacket != null) { lock (_DataPacketQueue) _DataPacketQueue.Enqueue(new CMRecvDataEventArgs(TcpService.ZXCFT, dataPacket, ((byte[])response.MsgBody).Length)); } } }