Commit ef25fa5e authored by Pavel Vainerman's avatar Pavel Vainerman

(Restorer): изменил обработку ошибок. Теперь выкидывается исключение,

вместо return false.
parent b4af90df
...@@ -55,11 +55,8 @@ Version 2.5 ...@@ -55,11 +55,8 @@ Version 2.5
- переписать систему инициализации и работы между UniSetActivator,UniSetManager и UniSetObject-ами (уменьшить количество функций (связность)) - переписать систему инициализации и работы между UniSetActivator,UniSetManager и UniSetObject-ами (уменьшить количество функций (связность))
- Использовать PIMPL (подумать.. это серьёзная переделка кода) - Использовать PIMPL (подумать.. это серьёзная переделка кода)
- Вылетать с ошибкой если в секции <thresholds> указан не существующий датчик
- совместимость между 64bit и 32bit - для этого нужно отказаться от использования сырого long и перейти либо на int32_t либо CORBA::Long. - совместимость между 64bit и 32bit - для этого нужно отказаться от использования сырого long и перейти либо на int32_t либо CORBA::Long.
Либо стоит всё-таки ввести свой тип данных value_t для хранимых значений, чтобы спокойно работать в x86_64 и x86_32 Либо стоит всё-таки ввести свой тип данных value_t для хранимых значений, чтобы спокойно работать в x86_64 и x86_32
при этом скрыв детали реализации. А возможно в последствии наложить какие-то ограничения на этот тип при этом скрыв детали реализации. А возможно в последствии наложить какие-то ограничения на этот тип
......
...@@ -249,8 +249,10 @@ bool NCRestorer_XML::getBaseInfo( const std::shared_ptr<UniXML>& xml, xmlNode* i ...@@ -249,8 +249,10 @@ bool NCRestorer_XML::getBaseInfo( const std::shared_ptr<UniXML>& xml, xmlNode* i
if( sid == UniSetTypes::DefaultObjectId ) if( sid == UniSetTypes::DefaultObjectId )
{ {
ucrit << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname << endl; ostringstream err;
return false; err << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname;
ucrit << err.str() << endl;
throw SystemError(err.str());
} }
ObjectId snode = uniset_conf()->getLocalNode(); ObjectId snode = uniset_conf()->getLocalNode();
...@@ -291,9 +293,11 @@ bool NCRestorer_XML::getSensorInfo( const std::shared_ptr<UniXML>& xml, xmlNode* ...@@ -291,9 +293,11 @@ bool NCRestorer_XML::getSensorInfo( const std::shared_ptr<UniXML>& xml, xmlNode*
if( inf->type == UniversalIO::UnknownIOType ) if( inf->type == UniversalIO::UnknownIOType )
{ {
ucrit << "(NCRestorer_XML:getSensorInfo): unknown iotype=" << xml->getProp(it, "iotype") ostringstream err;
<< " for " << xml->getProp(it, "name") << endl; err << "(NCRestorer_XML:getSensorInfo): unknown iotype=" << xml->getProp(it, "iotype")
return false; << " for " << xml->getProp(it, "name");
ucrit << err.str() << endl;
throw SystemError(err.str());
} }
// калибровка // калибровка
...@@ -328,11 +332,13 @@ bool NCRestorer_XML::getSensorInfo( const std::shared_ptr<UniXML>& xml, xmlNode* ...@@ -328,11 +332,13 @@ bool NCRestorer_XML::getSensorInfo( const std::shared_ptr<UniXML>& xml, xmlNode*
if( inf->d_si.id == UniSetTypes::DefaultObjectId ) if( inf->d_si.id == UniSetTypes::DefaultObjectId )
{ {
ucrit << "(NCRestorer_XML:getSensorInfo): sensor='" ostringstream err;
err << "(NCRestorer_XML:getSensorInfo): sensor='"
<< xml->getProp(it, "name") << "' err: " << xml->getProp(it, "name") << "' err: "
<< " Unknown SensorID for depend='" << d_txt << " Unknown SensorID for depend='" << d_txt;
<< endl;
return false; ucrit << err.str() << endl;
throw SystemError(err.str());
} }
inf->d_si.node = uniset_conf()->getLocalNode(); inf->d_si.node = uniset_conf()->getLocalNode();
...@@ -484,21 +490,28 @@ bool NCRestorer_XML::getThresholdInfo( const std::shared_ptr<UniXML>& xml, xmlNo ...@@ -484,21 +490,28 @@ bool NCRestorer_XML::getThresholdInfo( const std::shared_ptr<UniXML>& xml, xmlNo
if( ti.sid == UniSetTypes::DefaultObjectId ) if( ti.sid == UniSetTypes::DefaultObjectId )
{ {
ucrit << "(NCRestorer_XML:getThresholdInfo): " ostringstream err;
<< " Not found ID for " << sid_name << endl; err << "(NCRestorer_XML:getThresholdInfo): "
<< " Not found ID for " << sid_name;
ucrit << err.str() << endl;
throw SystemError(err.str());
} }
else else
{ {
UniversalIO::IOType iotype = uniset_conf()->getIOType(ti.sid); UniversalIO::IOType iotype = uniset_conf()->getIOType(ti.sid);
// Пока что IONotifyController поддерживает работу только с 'DI'. // Пока что IONotifyController поддерживает работу только с 'DI/DO'.
if( iotype != UniversalIO::DI ) if( iotype != UniversalIO::DI && iotype != UniversalIO::DO )
{ {
ucrit << "(NCRestorer_XML:getThresholdInfo): " ostringstream err;
<< " Bad iotype(" << iotype << ") for " << sid_name << ". iotype must be 'DI'!" << endl; err << "(NCRestorer_XML:getThresholdInfo): "
return false; << " Bad iotype(" << iotype << ") for " << sid_name
} << ". iotype must be 'DI' or 'DO'.";
ucrit << err.str() << endl;
throw SystemError(err.str());
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment