/// <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)); } } }
/// <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; } }
private void FillCacheWithIndicatorValuesData(ResIndicatorValuesDataPacket packet) { }