52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
|
|
/*
|
|||
|
|
* StatusLogger.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 31 <EFBFBD><EFBFBD><EFBFBD>. 2021 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "StatusLogger.hh"
|
|||
|
|
|
|||
|
|
systemic::StatusManager::Record & systemic::StatusLogger::search(Id id) const {
|
|||
|
|
|
|||
|
|
systemic::StatusManager::Record & record = systemic::StatusManager::search(id);
|
|||
|
|
|
|||
|
|
if( not record.exist() ) {
|
|||
|
|
|
|||
|
|
ErrorMessage message;
|
|||
|
|
|
|||
|
|
message.status = id;
|
|||
|
|
|
|||
|
|
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return record;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
systemic::StatusLogger::StatusLogger( Record * records, std::size_t size,
|
|||
|
|
std::pmr::memory_resource* allocator,
|
|||
|
|
NotificationInterface & herald )
|
|||
|
|
: StatusManager( records, size, allocator, herald ) {}
|
|||
|
|
|
|||
|
|
bool systemic::StatusLogger::add( Id id, InterfaceType * interface,
|
|||
|
|
InterfaceOverrideType * override,
|
|||
|
|
const volatile Type * value ) {
|
|||
|
|
|
|||
|
|
bool result = systemic::StatusManager::add(id, interface, override, value);
|
|||
|
|
|
|||
|
|
if( not result ) {
|
|||
|
|
|
|||
|
|
CriticalMessage message;
|
|||
|
|
|
|||
|
|
message.status = id;
|
|||
|
|
|
|||
|
|
logger->log_critical( reinterpret_cast<char *>(&message), sizeof(message) );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
|
|||
|
|
}
|