/// <summary>
        /// 异步接收数据
        /// </summary>
        /// <param name="response"></param>
        public void SendDataCallBack(MessageEntity response)
        {
            if (response.MsgBody is DataSet)
            {
                IndicatorDataPacket dataPacket = null;
                using (DataSet ds = response.MsgBody as DataSet)
                {
                    if (ds != null && ds.Tables != null && ds.Tables.Count > 0)
                    {
                        lock (ds)
                        {
                            using (DataTable dt = ds.Tables[0])
                            {
                                IndicateRequestType requestId;
                                String tableKeyCode;

                                if (TryGetRequestType(dt.TableName, out requestId, out tableKeyCode))
                                {
                                    switch (requestId)
                                    {
                                    case IndicateRequestType.LeftIndicatorsReport:
                                        dataPacket = new ResIndicatorsReportDataPacket(tableKeyCode);
                                        break;

                                    case IndicateRequestType.RightIndicatorsReport:
                                        dataPacket = new ResIndicatorsReportDataPacket(tableKeyCode);
                                        break;

                                    case IndicateRequestType.IndicatorValuesReport:
                                        dataPacket = new ResIndicatorValuesDataPacket(tableKeyCode);
                                        break;
                                    }

                                    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(dt);
                                }
                            }
                        }
                    }
                }
                if (dataPacket != null)
                {
                    lock (_DataPacketQueue)
                        _DataPacketQueue.Enqueue(new CMRecvDataEventArgs(TcpService.ZXCFT,
                                                                         dataPacket, 100000));
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Once client receive the response-packet,
        /// process the data for UI demond.
        /// </summary>
        /// <param name="dataPacket"></param>
        public override void SetData(DataPacket dataPacket)
        {
            IndicatorDataPacket iPacket = dataPacket as IndicatorDataPacket;

            switch (iPacket.RequestId)
            {
            case IndicateRequestType.LeftIndicatorsReport:
                ResIndicatorsReportDataPacket indicatorsData = dataPacket as ResIndicatorsReportDataPacket;
                FillCacheWithIndicatorsData(indicatorsData);
                break;

            case IndicateRequestType.RightIndicatorsReport:
                ResIndicatorValuesDataPacket indicatorValuesData = dataPacket as ResIndicatorValuesDataPacket;
                FillCacheWithIndicatorValuesData(indicatorValuesData);
                break;

            case IndicateRequestType.IndicatorValuesReport:
                break;
            }
        }
예제 #3
0
 private void FillCacheWithIndicatorValuesData(ResIndicatorValuesDataPacket packet)
 {
 }