///////////////////////////////////////////////////////////////////// // // // file: aLogger.h // // // ///////////////////////////////////////////////////////////////////// // // // description: Definition for BrainStem packet FIFO queue. // // // ///////////////////////////////////////////////////////////////////// // // // Copyright (c) 2018 Acroname Inc. - All Rights Reserved // // // // This file is part of the BrainStem release. See the license.txt // // file included with this package or go to // // https://acroname.com/software/brainstem-development-kit // // for full license details. // ///////////////////////////////////////////////////////////////////// #ifndef _aLogger_H_ #define _aLogger_H_ #include "aDefs.h" #include "aError.h" #include "aPacket.h" #include "aStream.h" #include "aLink.h" typedef void* aLoggerRef; #ifdef __cplusplus extern "C" { #endif ///////////////////////////////////////////////////////////////////// /// Typedef #aLogCallbackProc. /** * This callback is called to excersize the log function on the logger. * It takes a FileRef parameter and a vpRef that represents the subject * of the logging. */ typedef void(*aLogCallbackProc) (aFileRef logfile, aLinkRef vpRef); ///////////////////////////////////////////////////////////////////// /// Create a logger object. /** * Creates a logger object, that will create and start a thread for * logging to a file when it is enabled. * * \param vpRef logging subject. * \param process Callback for performing the log function given the subject (vpRef). * \param filename Log File path and file name. * \retval Non-NULL Successfully created logger object. * \retval NULL An error occured creating the output file. */ aLIBEXPORT aLoggerRef aLogger_Create(aLinkRef vpRef, aLogCallbackProc process, const char* filename); ///////////////////////////////////////////////////////////////////// /// Enable logging on the logger object. /** * Starts the Subthread that calls the logCallback, to process log messages. * * \param logger - The logger to enable. * * \retval aErrNone on success. * \retval various aError if an error occured starting the thread. */ aLIBEXPORT aErr aLogger_Enable(aLoggerRef logger); ///////////////////////////////////////////////////////////////////// /// Disable logging on the logger object. /** * Stops the Subthread that calls the logCallback, to process log messages. * * \param logger - The logger to disable. * * \retval aErrNone on success. * \retval various aError if an error occured stopping the thread. */ aLIBEXPORT aErr aLogger_Disable(aLoggerRef logger); ///////////////////////////////////////////////////////////////////// /// Destroy the logger. /** * Destroys a logger reference. deallocating associated resources cleanly. * * Currently enabled loggers will first be stopped, then the output file handles closed, * and the resources deallocated. * * \param loggerRef a Pointer to a valid LoggerRef. The loggerRef will be set to * NULL on succesful completion of the Destroy call. * \return aError aErrNone on success, and various aError values on failure. */ aLIBEXPORT aErr aLogger_Destroy(aLoggerRef* loggerRef); #ifdef __cplusplus } #endif #endif /* _aLogger_H_ */