Example #1
0
        private void SetNewsData(ResNewsFlashDataPacket dataPacket)
        {
            List <OneNews24HOrgDataRec> packetData = (dataPacket).News24HData;

            if (NewsFlashData.Count == 0)
            {
                NewsFlashData = packetData;
            }
            else
            {
                long memDate     = 0;
                long packetDate  = 0;
                int  insertIndex = -1;
                bool isAddEnd    = false;
                for (int i = 0; i < packetData.Count; i++)
                {
                    isAddEnd   = false;
                    packetDate = ((long)packetData[i].PublishDate) * 1000000 + packetData[i].PublishTime;
                    for (int j = 0; j < NewsFlashData.Count; j++)
                    {
                        memDate = ((long)NewsFlashData[j].PublishDate * 1000000) + NewsFlashData[j].PublishTime;
                        if (packetData[i].InfoCode == NewsFlashData[j].InfoCode)
                        {
                            insertIndex = -1;
                            break;
                        }
                        if (packetDate >= memDate)
                        {
                            insertIndex = j;
                            break;
                        }
                        if (j == NewsFlashData.Count - 1)
                        {
                            isAddEnd    = true;
                            insertIndex = -1;
                        }
                    }
                    if (insertIndex >= 0)
                    {
                        NewsFlashData.Insert(insertIndex, packetData[i]);
                    }
                    else if (isAddEnd)
                    {
                        NewsFlashData.AddRange(packetData.GetRange(i, packetData.Count - i));
                        break;
                    }
                }
            }
        }
Example #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));
                }
            }
        }