Line data Source code
1 : /** \file telem_usage.hpp
2 : * \brief The MagAO-X logger telem_usage log type.
3 : * \author Chris Bohlman (cbohlmanaz@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-10-15 created by CJB
9 : */
10 : #ifndef logger_types_telem_usage_hpp
11 : #define logger_types_telem_usage_hpp
12 :
13 : #include "generated/telem_usage_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : /// Log entry recording disk usage
23 : /** \ingroup logger_types
24 : */
25 : struct telem_usage : public flatbuffer_log
26 : {
27 :
28 : static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_USAGE;
29 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
30 :
31 : static timespec lastRecord; ///< The time of the last time this log was recorded. Used by the telemetry system.
32 :
33 : ///The type of the input message
34 : struct messageT : public fbMessage
35 : {
36 : ///Construct from components
37 1 : messageT( float ram,
38 : float boot,
39 : float root,
40 : float data
41 : )
42 1 : {
43 :
44 1 : auto fp = CreateTelem_usage_fb(builder, ram, boot, root, data );
45 :
46 1 : builder.Finish(fp);
47 :
48 1 : }
49 :
50 : };
51 :
52 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
53 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
54 : )
55 : {
56 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
57 2 : return VerifyTelem_usage_fbBuffer(verifier);
58 : }
59 :
60 : ///Get the message formatted for human consumption.
61 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
62 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
63 : )
64 : {
65 :
66 : static_cast<void>(len); // unused by most log types
67 :
68 0 : auto rgs = GetTelem_usage_fb(msgBuffer);
69 :
70 0 : std::string msg = "[usage] ram: ";
71 :
72 0 : msg += std::to_string(rgs->ramUsage());
73 0 : msg += " boot: ";
74 0 : msg += std::to_string(rgs->bootUsage());
75 0 : msg += " root: ";
76 0 : msg += std::to_string(rgs->rootUsage());
77 0 : msg += " data: ";
78 0 : msg += std::to_string(rgs->dataUsage());
79 :
80 0 : return msg;
81 :
82 0 : }
83 :
84 : /// Get the logMetaDetail for a member by name
85 : /**
86 : * \returns the a logMetaDetail filled in with the appropriate details
87 : * \returns an empty logMetaDetail if member not recognized
88 : */
89 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
90 : {
91 : static_cast<void>(member);
92 1 : std::cerr << "Meta data accessor not implemented in telem_usage\n";
93 1 : return logMetaDetail();
94 : }
95 :
96 : }; //telem_usage
97 :
98 :
99 :
100 : } //namespace logger
101 : } //namespace MagAOX
102 :
103 : #endif //logger_types_telem_usage_hpp
|