コード例 #1
0
 /// <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;
     }
 }
コード例 #2
0
        /// <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));
                }
            }
        }