167 lines
4.0 KiB
C++
167 lines
4.0 KiB
C++
/*
|
||
* ActionLogger.hpp
|
||
*
|
||
* Created on: 23 янв. 2022 г.
|
||
* Author: sozonov
|
||
*/
|
||
|
||
#ifndef UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_
|
||
#define UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_
|
||
|
||
#include "ValueManager.hpp"
|
||
#include "../logging/ILoggable.hh"
|
||
#include "ISignal.hh"
|
||
#include "IStatus.hh"
|
||
#include <stdint.h>
|
||
|
||
|
||
namespace systemic
|
||
{
|
||
|
||
typedef float SignalValue; //!<Значение сигнала.
|
||
typedef bool StatusValue; //!<Значение статуса.
|
||
typedef unsigned short NullMsg; //!<Значение сигнала.
|
||
|
||
|
||
|
||
class SignalActionLogger : public logging::ILoggable {
|
||
public:
|
||
/**
|
||
* Метод записи структы в лог.
|
||
*/
|
||
void logging() {
|
||
|
||
ErrorMessage message;
|
||
message.signal_value = signal;
|
||
|
||
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
|
||
}
|
||
|
||
SignalActionLogger( ISignal & _signal ) : signal( _signal )
|
||
{
|
||
}
|
||
|
||
//!Ошибка доступа.
|
||
struct ErrorMessage {
|
||
SignalValue signal_value; //!<Значение сигнала на момент записи.
|
||
};
|
||
|
||
private:
|
||
ISignal & signal;
|
||
|
||
};
|
||
|
||
class TwoSignalActionLogger : public logging::ILoggable {
|
||
public:
|
||
/**
|
||
* Метод записи структы в лог.
|
||
*/
|
||
void logging() {
|
||
|
||
ErrorMessage message;
|
||
message.first_signal_value = signal_f;
|
||
message.second_signal_value = signal_s;
|
||
|
||
|
||
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
|
||
}
|
||
|
||
TwoSignalActionLogger( ISignal & _signal_1, ISignal & _signal_2 ) :
|
||
signal_f( _signal_1 ), signal_s( _signal_2 )
|
||
{
|
||
}
|
||
|
||
//!Ошибка доступа.
|
||
struct ErrorMessage {
|
||
SignalValue first_signal_value; //!<Значение первого сигнала на момент записи.
|
||
SignalValue second_signal_value; //!<Значение второго сигнала на момент записи.
|
||
};
|
||
|
||
private:
|
||
ISignal & signal_f;
|
||
ISignal & signal_s;
|
||
|
||
};
|
||
|
||
class StatusActionLogger : public logging::ILoggable {
|
||
public:
|
||
/**
|
||
* Метод записи структы в лог.
|
||
*/
|
||
void logging() {
|
||
|
||
ErrorMessage message;
|
||
message.status_value = status;
|
||
|
||
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
|
||
}
|
||
|
||
StatusActionLogger( IStatus & _status ) : status( _status )
|
||
{
|
||
}
|
||
|
||
//!Ошибка доступа.
|
||
struct ErrorMessage {
|
||
StatusValue status_value; //!<Значение статуса на момент записи.
|
||
};
|
||
|
||
private:
|
||
IStatus & status;
|
||
};
|
||
|
||
class BinaryDataActionLogger : public logging::ILoggable {
|
||
public:
|
||
/**
|
||
* Метод записи структы в лог.
|
||
*/
|
||
void logging() {
|
||
|
||
logger->log_error( reinterpret_cast<char *>(custom_data.first), sizeof(custom_data.second) );
|
||
|
||
}
|
||
|
||
BinaryDataActionLogger( std::pair<char *, std::size_t> _cd ) : custom_data( _cd )
|
||
{
|
||
}
|
||
|
||
//!Ошибка доступа.
|
||
struct ErrorMessage {
|
||
// char* bin_data; //!<Значение сигнала на момент записи.
|
||
};
|
||
|
||
private:
|
||
std::pair<char *, std::size_t> custom_data{ nullptr, 1 };
|
||
|
||
};
|
||
|
||
class EmptyMessageActionLogger : public logging::ILoggable {
|
||
public:
|
||
/**
|
||
* Метод записи структы в лог.
|
||
*/
|
||
void logging() {
|
||
|
||
ErrorMessage message;
|
||
message.null = 0u;
|
||
|
||
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
|
||
}
|
||
|
||
EmptyMessageActionLogger( )
|
||
{
|
||
}
|
||
|
||
//!Ошибка доступа.
|
||
struct ErrorMessage {
|
||
NullMsg null; //!<Пустое сообщение.
|
||
};
|
||
|
||
private:
|
||
};
|
||
|
||
} /* namespace systemic */
|
||
|
||
|
||
|
||
#endif /* UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_ */
|