#include "AlertMessage.h" #include using namespace AlertData; AlertMessage::AlertMessage() { } AlertMessage::~AlertMessage() { } bool AlertMessage::IsValid() { return bIsValid; } const AlertsInfo& AlertMessage::GetAlertsInfo() { return alerts_info; } void AlertMessage::ClearData() { bIsValid = false; alerts_info.station_code.clear(); alerts_info.alert_type.clear(); alerts_info.date.clear(); alerts_info.time.clear(); alerts_info.desc.clear(); AbstractSpectrumDataMessage::ClearData(); } bool AlertMessage::AnalyseMessgeBody(QTextStream &content) { const MessageInfo& msg = AbstractSpectrumDataMessage::GetMessageInfo(); if ( QLatin1String("ALERT_FLOW") != msg.data_type && QLatin1String("ALERT_SYSTEM") != msg.data_type && QLatin1String("ALERT_TEMP") != msg.data_type && QLatin1String("ALERT_UPS") != msg.data_type && QLatin1String("ALERT_PRESSURE") != msg.data_type) { return bIsValid = false; } content >> alerts_info.station_code >> alerts_info.alert_type >> alerts_info.date >> alerts_info.time; do { QString line = content.readLine(); if ( 0==line.compare(QLatin1String("STOP")) ) { bIsValid = true; //检测到“STOP line”,消息完整,数据有效 break; } else if (content.atEnd()) { bIsValid = false; alerts_info.alert_type.clear(); alerts_info.date.clear(); alerts_info.desc.clear(); alerts_info.station_code.clear(); alerts_info.time.clear(); break; } else { // QString desc_row = QLatin1String("\n") + line; QString desc_row; if(alerts_info.desc.isEmpty()) { desc_row = line; } else { desc_row = QLatin1String("\n") + line; } alerts_info.desc.append(desc_row); } } while( !content.atEnd() ); return bIsValid; }