LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - state_change.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 100.0 % 17 17
Test Date: 2026-01-03 21:03:39 Functions: 100.0 % 4 4

            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
        

Generated by: LCOV version 2.0-1