Commit 54f51f78 authored by Pavel Vainerman's avatar Pavel Vainerman

(UInterface): небольшой рефакторинг

(попытка удалить лишний код, функции сделать const)
parent 9ff758dc
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
Name: libuniset2 Name: libuniset2
Version: 2.5 Version: 2.5
Release: alt1.1 Release: alt1.2
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: LGPL License: LGPL
...@@ -484,6 +484,10 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -484,6 +484,10 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# .. # ..
%changelog %changelog
* Thu Aug 25 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt1.2
- (UNetUDP): add debug information (getInfo)
- minor fixes
* Wed Aug 24 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt1.1 * Wed Aug 24 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt1.1
- codegen: make readonly in-variables - codegen: make readonly in-variables
......
...@@ -127,7 +127,7 @@ using namespace UniSetTypes; ...@@ -127,7 +127,7 @@ using namespace UniSetTypes;
si.node = ui->getConf()->getLocalNode(); si.node = ui->getConf()->getLocalNode();
BEG_FUNC1(SMInterface::setValue) BEG_FUNC1(SMInterface::setValue)
ui->fastSetValue(si, value, myid); ui->setValue(si, value, myid);
return; return;
END_FUNC(SMInterface::setValue) END_FUNC(SMInterface::setValue)
} }
......
...@@ -37,16 +37,6 @@ ...@@ -37,16 +37,6 @@
#include "Configuration.h" #include "Configuration.h"
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
/*! \namespace UniversalIO
* Пространство имен содержащее классы, функции и т.п. для работы с вводом/выводом
*/
namespace UniversalIO
{
/*! Время ожидания ответа */
const timeout_t defaultTimeOut = 3; // [сек]
}
// -----------------------------------------------------------------------------------------
#define UI_THROW_EXCEPTIONS UniSetTypes::TimeOut,UniSetTypes::IOBadParam,UniSetTypes::ORepFailed #define UI_THROW_EXCEPTIONS UniSetTypes::TimeOut,UniSetTypes::IOBadParam,UniSetTypes::ORepFailed
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
/*! /*!
...@@ -70,18 +60,18 @@ class UInterface ...@@ -70,18 +60,18 @@ class UInterface
// Работа с датчиками // Работа с датчиками
//! Получение состояния датчика //! Получение состояния датчика
long getValue ( const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node ) const throw(UI_THROW_EXCEPTIONS); long getValue (const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node) const throw(UI_THROW_EXCEPTIONS);
long getValue ( const UniSetTypes::ObjectId id ) const; long getValue ( const UniSetTypes::ObjectId id ) const;
long getRawValue( const IOController_i::SensorInfo& si ); long getRawValue( const IOController_i::SensorInfo& si );
//! Выставление состояния датчика //! Выставление состояния датчика
void setValue ( const UniSetTypes::ObjectId id, long value, const UniSetTypes::ObjectId node ) const throw(UI_THROW_EXCEPTIONS); void setValue ( const UniSetTypes::ObjectId id, long value, const UniSetTypes::ObjectId node, UniSetTypes::ObjectId sup_id = UniSetTypes::DefaultObjectId ) const throw(UI_THROW_EXCEPTIONS);
void setValue ( const UniSetTypes::ObjectId id, long value ) const; void setValue ( const UniSetTypes::ObjectId id, long value ) const;
void setValue ( const IOController_i::SensorInfo& si, long value, const UniSetTypes::ObjectId supplier ); void setValue ( const IOController_i::SensorInfo& si, long value, const UniSetTypes::ObjectId supplier ) const;
// fast - это удалённый вызов "без подтверждения", он быстрее, но менее надёжен // fast - это удалённый вызов "без подтверждения", он быстрее, но менее надёжен
// т.к. вызывающий никогда не узнает об ошибке, если она была (датчик такой не найдён и т.п.) // т.к. вызывающий никогда не узнает об ошибке, если она была (датчик такой не найдён и т.п.)
void fastSetValue( const IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId supplier ); void fastSetValue( const IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId supplier ) const;
//! Получение состояния для списка указанных датчиков //! Получение состояния для списка указанных датчиков
IOController_i::SensorInfoSeq_var getSensorSeq( const UniSetTypes::IDList& lst ); IOController_i::SensorInfoSeq_var getSensorSeq( const UniSetTypes::IDList& lst );
...@@ -178,7 +168,7 @@ class UInterface ...@@ -178,7 +168,7 @@ class UInterface
return rep.resolve( oind->getNameById(id) ); return rep.resolve( oind->getNameById(id) );
} }
UniSetTypes::ObjectPtr resolve( const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId nodeName, int timeoutMS = UniversalIO::defaultTimeOut) const UniSetTypes::ObjectPtr resolve(const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId nodeName) const
throw(UniSetTypes::ResolveNameError, UniSetTypes::TimeOut); throw(UniSetTypes::ResolveNameError, UniSetTypes::TimeOut);
......
...@@ -282,7 +282,7 @@ void UInterface::setUndefinedState( const IOController_i::SensorInfo& si, bool u ...@@ -282,7 +282,7 @@ void UInterface::setUndefinedState( const IOController_i::SensorInfo& si, bool u
* \return текущее значение датчика * \return текущее значение датчика
* \exception IOBadParam - генерируется если указано неправильное имя вывода или секции * \exception IOBadParam - генерируется если указано неправильное имя вывода или секции
*/ */
void UInterface::setValue( const ObjectId id, long value, const ObjectId node ) const void UInterface::setValue( const ObjectId id, long value, const ObjectId node, const UniSetTypes::ObjectId sup_id ) const
throw(UI_THROW_EXCEPTIONS) throw(UI_THROW_EXCEPTIONS)
{ {
if ( id == DefaultObjectId ) if ( id == DefaultObjectId )
...@@ -291,10 +291,17 @@ throw(UI_THROW_EXCEPTIONS) ...@@ -291,10 +291,17 @@ throw(UI_THROW_EXCEPTIONS)
if ( node == DefaultObjectId ) if ( node == DefaultObjectId )
{ {
ostringstream err; ostringstream err;
err << "UI(askRemoteSensor): id='" << id << "' error: node=UniSetTypes::DefaultObjectId"; err << "UI(setValue): id='" << id << "' error: node=UniSetTypes::DefaultObjectId";
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
/*
if ( sup_id == DefaultObjectId )
{
ostringstream err;
err << "UI(setValue): id='" << id << "' error: supplier=UniSetTypes::DefaultObjectId";
throw ORepFailed(err.str());
}
*/
try try
{ {
CORBA::Object_var oref; CORBA::Object_var oref;
...@@ -313,7 +320,7 @@ throw(UI_THROW_EXCEPTIONS) ...@@ -313,7 +320,7 @@ throw(UI_THROW_EXCEPTIONS)
oref = resolve( id, node ); oref = resolve( id, node );
IOController_i_var iom = IOController_i::_narrow(oref); IOController_i_var iom = IOController_i::_narrow(oref);
iom->setValue(id, value, myid); iom->setValue(id, value, sup_id);
return; return;
} }
catch( const CORBA::TRANSIENT& ) {} catch( const CORBA::TRANSIENT& ) {}
...@@ -365,31 +372,18 @@ throw(UI_THROW_EXCEPTIONS) ...@@ -365,31 +372,18 @@ throw(UI_THROW_EXCEPTIONS)
void UInterface::setValue( const ObjectId name, long value ) const void UInterface::setValue( const ObjectId name, long value ) const
{ {
setValue(name, value, uconf->getLocalNode()); setValue(name, value, uconf->getLocalNode(), myid);
} }
void UInterface::setValue( const IOController_i::SensorInfo& si, long value, const UniSetTypes::ObjectId supplier ) void UInterface::setValue( const IOController_i::SensorInfo& si, long value, const UniSetTypes::ObjectId sup_id ) const
{ {
ObjectId old = myid; setValue(si.id, value, si.node,sup_id);
try
{
myid = supplier;
setValue(si.id, value, si.node);
}
catch(...)
{
myid = old;
throw;
}
myid = old;
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
// функция не вырабатывает исключий! // функция не вырабатывает исключий!
void UInterface::fastSetValue( const IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId sup_id ) void UInterface::fastSetValue( const IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId sup_id ) const
{ {
if ( si.id == DefaultObjectId ) if ( si.id == DefaultObjectId )
{ {
...@@ -805,7 +799,7 @@ void UInterface::unregister( const ObjectId id )throw(ORepFailed) ...@@ -805,7 +799,7 @@ void UInterface::unregister( const ObjectId id )throw(ORepFailed)
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
ObjectPtr UInterface::resolve( const ObjectId rid , const ObjectId node, int timeoutSec ) const ObjectPtr UInterface::resolve( const ObjectId rid , const ObjectId node ) const
throw(ResolveNameError, UniSetTypes::TimeOut ) throw(ResolveNameError, UniSetTypes::TimeOut )
{ {
if ( rid == DefaultObjectId ) if ( rid == DefaultObjectId )
......
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