Line data Source code
1 : /** \file state_change.hpp
2 : * \brief The MagAO-X logger state_change log type.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-08-18 created by JRM
9 : */
10 : #ifndef logger_types_state_change_hpp
11 : #define logger_types_state_change_hpp
12 :
13 : #include "../../app/stateCodes.hpp"
14 :
15 : #include "generated/state_change_generated.h"
16 : #include "flatbuffer_log.hpp"
17 :
18 : namespace MagAOX
19 : {
20 : namespace logger
21 : {
22 :
23 :
24 : ///Application State Change
25 : /** \ingroup logger_types
26 : */
27 : struct state_change : public flatbuffer_log
28 : {
29 : //The event code
30 : static const flatlogs::eventCodeT eventCode = eventCodes::STATE_CHANGE;
31 :
32 : //The default level
33 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_INFO;
34 :
35 : ///The type of the message
36 : struct messageT : public fbMessage
37 : {
38 28 : messageT( int16_t from,
39 : int16_t to
40 : )
41 28 : {
42 28 : auto gs = CreateState_change_fb(builder, from, to);
43 28 : builder.Finish(gs);
44 28 : }
45 : };
46 :
47 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
48 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
49 : )
50 : {
51 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
52 2 : return VerifyState_change_fbBuffer(verifier);
53 : }
54 :
55 : /// Format the message for text output, including translation of state codes to text form.
56 : /**
57 : * \returns the message formatted as "State changed from UNINITIALIZED to INITIALIZED"
58 : */
59 19 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
60 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
61 : )
62 : {
63 : static_cast<void>(len);
64 :
65 19 : auto rgs = GetState_change_fb(msgBuffer);
66 :
67 19 : std::stringstream s;
68 19 : s << "State changed from " << app::stateCodes::codeText(rgs->from()) << " to " << app::stateCodes::codeText(rgs->to());
69 38 : return s.str();
70 19 : }
71 :
72 : /// Access the from field
73 : static std::string from(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
74 : {
75 : auto rgs = GetState_change_fb(msgBuffer);
76 : return app::stateCodes::codeText(rgs->from());
77 : }
78 :
79 : /// Access the to field
80 : static std::string to(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
81 : {
82 : auto rgs = GetState_change_fb(msgBuffer);
83 : return app::stateCodes::codeText(rgs->to());
84 : }
85 :
86 : /// Get an empty logMetaDetail because meta data doesn't make sense for this log
87 : /**
88 : * \returns an empty logMetaDetail
89 : */
90 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
91 : {
92 : static_cast<void>(member);
93 :
94 1 : std::cerr << "meta data doesn't make sense for state_change.\n";
95 1 : return logMetaDetail();
96 : }
97 :
98 : };
99 :
100 : } //namespace logger
101 : } //namespace MagAOX
102 :
103 : #endif //logger_types_state_change_hpp
|