cmvr_head/packages/erpc-1.14.0/erpc_c/infra/erpc_message_loggers.hpp

126 lines
2.8 KiB
C++
Raw Normal View History

2025-12-30 15:44:41 +08:00
/*
* Copyright 2017 NXP
* All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef _EMBEDDED_RPC__LOGEVENTLISTENERS_H_
#define _EMBEDDED_RPC__LOGEVENTLISTENERS_H_
#include "erpc_transport.hpp"
/*!
* @addtogroup infra_transport
* @{
* @file
*/
////////////////////////////////////////////////////////////////////////////////
// Classes
////////////////////////////////////////////////////////////////////////////////
namespace erpc {
/*!
* @brief Logging messages objects used for logging sent/received messages.
*
* @ingroup infra_utility
*/
class MessageLogger
{
public:
/*!
* @brief MessageLogger constructor.
*/
explicit MessageLogger(Transport *transport) : m_next(NULL), m_transport(transport){};
/*!
* @brief MessageLogger destructor
*/
~MessageLogger(void){};
/*!
* @brief Return next logger.
*
* @return Pointer to next logger.
*/
MessageLogger *getNext(void) { return m_next; }
/*!
* @brief Set next logger.
*
* @param[in] next Pointer to next logger.
*/
void setNext(MessageLogger *next) { m_next = next; }
/*!
* @brief Returns next transport object used for logging messages.
*
* @return Transport object used for logging messages.
*/
Transport *getLogger(void) { return m_transport; }
protected:
MessageLogger *m_next; /*!< Pointer to next logger. */
Transport *m_transport; /*!< Pointer to transport object used for logging messages. */
};
/*!
* @brief Logging messages functionality.
*
* @ingroup infra_utility
*/
class MessageLoggers
{
public:
/*!
* @brief Constructor.
*/
MessageLoggers(void) : m_logger(NULL){};
/*!
* @brief Transport destructor
*/
~MessageLoggers(void);
/*!
* @brief This function add given transport to newly created MessageLogger object.
*
* @param[in] transport Transport used for logging messages
*
* @retval True When transport was successfully added.
* @retval False When transport wasn't added.
*/
bool addMessageLogger(Transport *transport);
protected:
MessageLogger *m_logger; /*!< Pointer to first logger. */
/*!
* @brief This function add given transport to newly created MessageLogger object.
*
* @param[in] msg Buffer which will be logged.
*
* @return The eRPC status based on transport type.
*/
erpc_status_t logMessage(MessageBuffer *msg);
private:
/**
* @brief This function create new MessageLogger object
*
* @param[in] transport Transport used by MessageLogger.
*
* @return MessageLogger* Returns new MessageLogger object.
*/
MessageLogger *create(Transport *transport);
};
} // namespace erpc
/*! @} */
#endif // _EMBEDDED_RPC__LOGEVENTLISTENERS_H_