Commit 9020f80b authored by Pavel Vainerman's avatar Pavel Vainerman

(IOC): рефакторинг: избавление от лишнего кода

(не пригодившийся механизм IOFilter)
parent f025a2f7
...@@ -231,33 +231,6 @@ class IOController: ...@@ -231,33 +231,6 @@ class IOController:
IOStateList::iterator myioEnd(); IOStateList::iterator myioEnd();
IOStateList::iterator myiofind( UniSetTypes::ObjectId id ); IOStateList::iterator myiofind( UniSetTypes::ObjectId id );
// -------------------------- // --------------------------
// ФИЛЬТРОВАНИЕ
//
typedef sigc::slot<bool, std::shared_ptr<USensorInfo>&, CORBA::Long, UniSetTypes::ObjectId> IOFilterSlot;
typedef std::list<IOFilterSlot> IOFilterSlotList;
/*
Фильтрующая функция должна возвращать:
TRUE - если значение 'нормальное'
FALSE - если значение не подходит (отбрасывается)
Пример использования:
addIOFilter( sigc::mem_fun(my,&MyClass::my_filter) );
*/
IOFilterSlotList::iterator addIOFilter( IOFilterSlot sl, bool push_front = false );
void eraseIOFilter(IOFilterSlotList::iterator& it);
// функии проверки текущего значения
bool checkIOFilters( std::shared_ptr<USensorInfo>& ai, CORBA::Long& newvalue, UniSetTypes::ObjectId sup_id );
inline bool iofiltersEmpty() const
{
return iofilters.empty();
}
inline int iodiltersSize() const
{
return iofilters.size();
}
private: private:
friend class NCRestorer; friend class NCRestorer;
...@@ -274,8 +247,6 @@ class IOController: ...@@ -274,8 +247,6 @@ class IOController:
bool isPingDBServer; // флаг связи с DBServer-ом bool isPingDBServer; // флаг связи с DBServer-ом
IOFilterSlotList iofilters; /*!< список фильтров для аналоговых значений */
UniSetTypes::uniset_rwmutex loggingMutex; /*!< logging info mutex */ UniSetTypes::uniset_rwmutex loggingMutex; /*!< logging info mutex */
public: public:
......
...@@ -275,9 +275,6 @@ class IONotifyController: ...@@ -275,9 +275,6 @@ class IONotifyController:
virtual bool activateObject() override; virtual bool activateObject() override;
virtual void initItem( IOStateList::iterator& it, IOController* ic ); virtual void initItem( IOStateList::iterator& it, IOController* ic );
// ФИЛЬТРЫ
bool myIOFilter(std::shared_ptr<USensorInfo>& ai, CORBA::Long newvalue, UniSetTypes::ObjectId sup_id);
//! посылка информации об изменении состояния датчика //! посылка информации об изменении состояния датчика
virtual void send( ConsumerListInfo& lst, UniSetTypes::SensorMessage& sm ); virtual void send( ConsumerListInfo& lst, UniSetTypes::SensorMessage& sm );
......
...@@ -285,11 +285,10 @@ void IOController::localSetValue( std::shared_ptr<USensorInfo>& usi, ...@@ -285,11 +285,10 @@ void IOController::localSetValue( std::shared_ptr<USensorInfo>& usi,
usi->supplier = sup_id; // запоминаем того кто изменил usi->supplier = sup_id; // запоминаем того кто изменил
// фильтрам может потребоваться измениять исходное значение (например для усреднения)
// поэтому передаём (и затем сохраняем) напрямую(ссылку) value (а не const value)
bool blocked = ( usi->blocked || usi->undefined ); bool blocked = ( usi->blocked || usi->undefined );
changed = ( usi->value != value );
if( checkIOFilters(usi, value, sup_id) || blocked ) if( changed || blocked )
{ {
ulog4 << myname << ": save sensor value (" << sid << ")" ulog4 << myname << ": save sensor value (" << sid << ")"
<< " name: " << uniset_conf()->oind->getNameById(sid) << " name: " << uniset_conf()->oind->getNameById(sid)
...@@ -299,20 +298,8 @@ void IOController::localSetValue( std::shared_ptr<USensorInfo>& usi, ...@@ -299,20 +298,8 @@ void IOController::localSetValue( std::shared_ptr<USensorInfo>& usi,
<< " real_value=" << usi->real_value << " real_value=" << usi->real_value
<< endl; << endl;
CORBA::Long prev = usi->value; usi->real_value = value;
usi->value = (blocked ? usi->d_off_value : value);
if( blocked )
{
usi->real_value = value;
usi->value = usi->d_off_value;
}
else
{
usi->value = value;
usi->real_value = value;
}
changed = ( prev != usi->value );
// запоминаем время изменения // запоминаем время изменения
struct timeval tm = { 0 }; struct timeval tm = { 0 };
...@@ -641,36 +628,6 @@ void IOController::USensorInfo::init( const IOController_i::SensorIOInfo& s ) ...@@ -641,36 +628,6 @@ void IOController::USensorInfo::init( const IOController_i::SensorIOInfo& s )
(*this) = std::move(r); (*this) = std::move(r);
} }
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
bool IOController::checkIOFilters( std::shared_ptr<USensorInfo>& usi, CORBA::Long& newvalue,
UniSetTypes::ObjectId sup_id )
{
for( const auto& it : iofilters )
{
if( it(usi, newvalue, sup_id) == false )
return false;
}
return true;
}
// ----------------------------------------------------------------------------------------
IOController::IOFilterSlotList::iterator IOController::addIOFilter( IOFilterSlot sl, bool push_front )
{
if( push_front == false )
{
iofilters.push_back(sl);
return --iofilters.end();
}
iofilters.push_front(sl);
return iofilters.begin();
}
// ----------------------------------------------------------------------------------------
void IOController::eraseIOFilter(IOController::IOFilterSlotList::iterator& it)
{
iofilters.erase(it);
}
// ----------------------------------------------------------------------------------------
IOController::IOStateList::iterator IOController::myioBegin() IOController::IOStateList::iterator IOController::myioBegin()
{ {
return ioList.begin(); return ioList.begin();
......
...@@ -50,8 +50,6 @@ IONotifyController::IONotifyController(const string& name, const string& section ...@@ -50,8 +50,6 @@ IONotifyController::IONotifyController(const string& name, const string& section
trshMutex(name + "trshMutex"), trshMutex(name + "trshMutex"),
maxAttemtps(uniset_conf()->getPIntField("ConsumerMaxAttempts", 5)) maxAttemtps(uniset_conf()->getPIntField("ConsumerMaxAttempts", 5))
{ {
// добавляем фильтры
addIOFilter( sigc::mem_fun(this, &IONotifyController::myIOFilter) );
} }
IONotifyController::IONotifyController( ObjectId id, std::shared_ptr<NCRestorer> d ): IONotifyController::IONotifyController( ObjectId id, std::shared_ptr<NCRestorer> d ):
...@@ -63,9 +61,6 @@ IONotifyController::IONotifyController( ObjectId id, std::shared_ptr<NCRestorer> ...@@ -63,9 +61,6 @@ IONotifyController::IONotifyController( ObjectId id, std::shared_ptr<NCRestorer>
{ {
conUndef = signal_change_undefined_state().connect(sigc::mem_fun(*this, &IONotifyController::onChangeUndefinedState)); conUndef = signal_change_undefined_state().connect(sigc::mem_fun(*this, &IONotifyController::onChangeUndefinedState));
conInit = signal_init().connect(sigc::mem_fun(*this, &IONotifyController::initItem)); conInit = signal_init().connect(sigc::mem_fun(*this, &IONotifyController::initItem));
// добавляем фильтры
addIOFilter( sigc::mem_fun(this, &IONotifyController::myIOFilter) );
} }
IONotifyController::~IONotifyController() IONotifyController::~IONotifyController()
...@@ -266,15 +261,6 @@ void IONotifyController::ask( AskMap& askLst, const UniSetTypes::ObjectId sid, ...@@ -266,15 +261,6 @@ void IONotifyController::ask( AskMap& askLst, const UniSetTypes::ObjectId sid,
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool IONotifyController::myIOFilter( std::shared_ptr<USensorInfo>& usi,
CORBA::Long newvalue, UniSetTypes::ObjectId sup_id )
{
if( usi->value == newvalue )
return false;
return true;
}
// ------------------------------------------------------------------------------------------
void IONotifyController::localSetValue( std::shared_ptr<IOController::USensorInfo>& usi, void IONotifyController::localSetValue( std::shared_ptr<IOController::USensorInfo>& usi,
UniSetTypes::ObjectId sid, UniSetTypes::ObjectId sid,
CORBA::Long value, UniSetTypes::ObjectId sup_id ) CORBA::Long value, UniSetTypes::ObjectId sup_id )
......
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