Commit 018cd873 authored by Pavel Vainerman's avatar Pavel Vainerman

(SM): продолжение рефакторинга кода (удаление лишнего, оптимизация).

parent 56670e52
......@@ -108,7 +108,7 @@ SharedMemory::SharedMemory( ObjectId id, const std::string& datafile, const std:
// ----------------------
buildHistoryList(confnode);
signal_change_value().connect(sigc::mem_fun(*this, &SharedMemory::updateHistory));
signal_change_value().connect(sigc::mem_fun(*this, &SharedMemory::checkFuse));
for( auto i = hist.begin(); i != hist.end(); ++i )
histmap[i->fuse_id].push_back(i);
......@@ -207,7 +207,7 @@ void SharedMemory::timerInfo( const TimerMessage* tm )
askTimer(tm->id, 0);
}
else if( tm->id == tmHistory )
saveHistory();
saveToHistory();
else if( tm->id == tmPulsar )
{
if( sidPulsar != DefaultObjectId )
......@@ -725,7 +725,7 @@ SharedMemory::HistorySlot SharedMemory::signal_history()
return m_historySignal;
}
// -----------------------------------------------------------------------------
void SharedMemory::saveHistory()
void SharedMemory::saveToHistory()
{
if( hist.empty() )
return;
......@@ -747,7 +747,7 @@ void SharedMemory::saveHistory()
}
}
// -----------------------------------------------------------------------------
void SharedMemory::updateHistory( std::shared_ptr<USensorInfo>& usi, IOController* )
void SharedMemory::checkFuse( std::shared_ptr<USensorInfo>& usi, IOController* )
{
if( hist.empty() )
return;
......@@ -758,7 +758,6 @@ void SharedMemory::updateHistory( std::shared_ptr<USensorInfo>& usi, IOControlle
HistoryItList& lst = *(static_cast<HistoryItList*>(usi->userdata[udataHistory]));
// auto i = histmap.find(s_it->si.id);
//
// if( i == histmap.end() )
// return;
......
......@@ -387,14 +387,6 @@ class SharedMemory:
typedef std::list<History::iterator> HistoryItList;
typedef std::unordered_map<UniSetTypes::ObjectId, HistoryItList> HistoryFuseMap;
//! \warning Оптимизация использует userdata! Это опасно, если кто-то ещё захочет
//! использовать userdata[2]. (0,1 - использует IONotifyController)
// оптимизация с использованием userdata (IOController::USensorInfo::userdata) нужна
// чтобы не использовать поиск в HistoryFuseMap (см. updateHistory)
// т.к. 0,1 - использует IONotifyController (см. IONotifyController::UserDataID)
// то используем 2 - в качестве элемента userdata
static const size_t udataHistory = 2;
typedef sigc::signal<void, const HistoryInfo&> HistorySlot;
HistorySlot signal_history(); /*!< сигнал о срабатывании условий "сброса" дампа истории */
......@@ -490,13 +482,21 @@ class SharedMemory:
virtual void dumpOrdersList( const UniSetTypes::ObjectId sid, const IONotifyController::ConsumerListInfo& lst ) override {};
virtual void dumpThresholdList( const UniSetTypes::ObjectId sid, const IONotifyController::ThresholdExtList& lst ) override {}
bool dblogging;
bool dblogging = { false };
//! \warning Оптимизация использует userdata! Это опасно, если кто-то ещё захочет
//! использовать userdata[2]. (0,1 - использует IONotifyController)
// оптимизация с использованием userdata (IOController::USensorInfo::userdata) нужна
// чтобы не использовать поиск в HistoryFuseMap (см. checkFuse)
// т.к. 0,1 - использует IONotifyController (см. IONotifyController::UserDataID)
// то используем не занятый "2" - в качестве элемента userdata
static const size_t udataHistory = 2;
History hist;
HistoryFuseMap histmap; /*!< map для оптимизации поиска */
virtual void updateHistory(std::shared_ptr<IOController::USensorInfo>& usi, IOController* );
virtual void saveHistory();
virtual void checkFuse(std::shared_ptr<IOController::USensorInfo>& usi, IOController* );
virtual void saveToHistory();
void buildHistoryList( xmlNode* cnode );
void checkHistoryFilter( UniXML::iterator& it );
......
......@@ -302,7 +302,6 @@ class IONotifyController:
virtual void localSetValue( std::shared_ptr<USensorInfo>& usi,
CORBA::Long value, UniSetTypes::ObjectId sup_id ) override;
//! \warning Оптимизация использует userdata! Это опасно, если кто-то ещё захочет его использовать!
// идентификаторы данные в userdata (см. USensorInfo::userdata)
enum UserDataID
......
......@@ -50,6 +50,8 @@ IONotifyController::IONotifyController(const string& name, const string& section
trshMutex(name + "trshMutex"),
maxAttemtps(uniset_conf()->getPIntField("ConsumerMaxAttempts", 5))
{
conUndef = signal_change_undefined_state().connect(sigc::mem_fun(*this, &IONotifyController::onChangeUndefinedState));
conInit = signal_init().connect(sigc::mem_fun(*this, &IONotifyController::initItem));
}
IONotifyController::IONotifyController( ObjectId id, std::shared_ptr<NCRestorer> d ):
......
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