167 lines
3.6 KiB
C++
167 lines
3.6 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_ */
|