Line data Source code
1 : /** \file config_log.hpp
2 : * \brief The MagAO-X logger config_log log type.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-09-06 created by JRM
9 : */
10 : #ifndef logger_types_config_log_hpp
11 : #define logger_types_config_log_hpp
12 :
13 : #include "generated/config_log_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : /// Log entry recording configuration settings at startup
23 : /** \ingroup logger_types
24 : */
25 : struct config_log : public flatbuffer_log
26 : {
27 : ///The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::CONFIG_LOG;
29 :
30 : ///The default level
31 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_INFO;
32 :
33 :
34 : ///The type of the input message
35 : struct messageT : public fbMessage
36 : {
37 : ///Construct from components
38 337 : messageT( const std::string & name,
39 : const int & code,
40 : const std::string & value,
41 : const std::string & source
42 : )
43 337 : {
44 337 : auto _name = builder.CreateString(name);
45 337 : auto _value = builder.CreateString(value);
46 337 : auto _source = builder.CreateString(source);
47 :
48 :
49 337 : auto fp = CreateConfig_log_fb(builder, _name, code, _value, _source);
50 337 : builder.Finish(fp);
51 :
52 337 : }
53 :
54 : };
55 :
56 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
57 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
58 : )
59 : {
60 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
61 2 : return VerifyConfig_log_fbBuffer(verifier);
62 : }
63 :
64 : ///Get the message formatte for human consumption.
65 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
66 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
67 : )
68 : {
69 : static_cast<void>(len);
70 :
71 0 : auto fbs = GetConfig_log_fb(msgBuffer);
72 :
73 0 : std::string msg = "Config: ";
74 :
75 0 : if(fbs->name())
76 : {
77 0 : msg += fbs->name()->c_str();
78 : }
79 :
80 0 : msg += "=";
81 :
82 0 : if(fbs->value())
83 : {
84 0 : msg += fbs->value()->c_str();
85 : }
86 :
87 0 : msg += " [";
88 :
89 0 : if(fbs->source())
90 : {
91 0 : msg += fbs->source()->c_str();
92 : }
93 :
94 0 : msg += "]";
95 :
96 0 : return msg;
97 :
98 0 : }
99 :
100 : /// Get an empty logMetaDetail because meta data doesn't make sense for this log
101 : /**
102 : * \returns an empty logMetaDetail
103 : */
104 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
105 : {
106 : static_cast<void>(member);
107 :
108 1 : std::cerr << "meta data doesn't make sense for config_log.\n";
109 1 : return logMetaDetail();
110 : }
111 :
112 : }; //config_log
113 :
114 :
115 : } //namespace logger
116 : } //namespace MagAOX
117 :
118 : #endif //logger_types_config_log_hpp
119 :
|