/* * (c) Copyright, Real-Time Innovations, 2002-2026. * All rights reserved. * No duplications, whole or partial, manual or electronic, may be made * without express written permission. Any such copies, or * revisions thereof, must display this notice unaltered. * This code contains trade secrets of Real-Time Innovations, Inc. */ #ifndef reda_log_h #define reda_log_h #include "reda/reda_dll.h" #include "log/log_common.h" #ifdef __cplusplus extern "C" { #endif /*e \file * @brief Data structures on which the entire Waveworks is built */ /*e \mainpage * utility library written in C that implements programming * patterns that have been optimized for real-time environments. * * REDA is composed of sevaral packages handling buffers, * thread-specific storage, concurent table access. etc. The packages * and their interdependencies are illustrated below: * * \image html REDA_Dependencies.jpg "REDA modules and their dependencies" */ /*e \defgroup REDAModule REDA * \ingroup RTI * \brief Real-time Efficient Data-structures and Algorithms. */ /*e \defgroup REDALogClass REDALog * \ingroup REDAModule * \brief integrated logging * * NOTE: When a new submodule is added to REDA, it must be given * a number and entered here. Because of the use of this id * for logging, there are 16 submodule id's: 0x0000, 0x1000,... * ..., 0xF000. * It is suggested we put the modules here in an order that * respects their dependencies: modules with a lower number * cannot depend on modules with a higher number. */ #define SUBMODULE_REDA_BUFFER (0 << 10) #define SUBMODULE_REDA_FAST_BUFFER (1 << 10) #define SUBMODULE_REDA_EPOCH (2 << 10) #define SUBMODULE_REDA_SEQUENCE_NUMBER (3 << 10) #define SUBMODULE_REDA_INLINE_LIST (4 << 10) #define SUBMODULE_REDA_CONCURRENT_QUEUE (5 << 10) #define SUBMODULE_REDA_HASH (6 << 10) #define SUBMODULE_REDA_ORDERED_DATA_TYPE (7 << 10) #define SUBMODULE_REDA_WORKER (8 << 10) #define SUBMODULE_REDA_SKIPLIST (9 << 10) #define SUBMODULE_REDA_HASHED_SKIPLIST (10 << 10) #define SUBMODULE_REDA_TABLE (11 << 10) #define SUBMODULE_REDA_DATABASE (12 << 10) #define SUBMODULE_REDA_STRING (13 << 10) #define SUBMODULE_REDA_DBSHELL (14 << 10) #define SUBMODULE_REDA_INLINE_MEMORY (15 << 10) #define SUBMODULE_REDA_GENERIC (16 << 10) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDABuffer @see REDABuffer */ #define REDA_SUBMODULE_MASK_BUFFER (0x0001) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAFastBuffer @see REDAFastBuffer */ #define REDA_SUBMODULE_MASK_FAST_BUFFER (0x0002) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAEpoch @see REDAEpoch */ #define REDA_SUBMODULE_MASK_EPOCH (0x0004) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDASequenceNumber @see REDASequenceNumber */ #define REDA_SUBMODULE_MASK_SEQUENCE_NUMBER (0x0008) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAInlineList @see REDAInlineList */ #define REDA_SUBMODULE_MASK_INLINE_LIST (0x0010) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAConcurrentQueue @see REDAConcurrentQueue */ #define REDA_SUBMODULE_MASK_CONCURRENT_QUEUE (0x0020) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAHash @see REDAHash */ #define REDA_SUBMODULE_MASK_HASH (0x0040) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAOrderedDataType @see REDAOrderedDataType */ #define REDA_SUBMODULE_MASK_ORDERED_DATA_TYPE (0x0080) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAWorker, REDAWorkerManager or REDAExclusiveArea @see REDAWorker REDAWorkerManager REDAExclusiveArea */ #define REDA_SUBMODULE_MASK_WORKER (0x0100) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDASkiplist @see REDASkiplist */ #define REDA_SUBMODULE_MASK_SKIPLIST (0x0200) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAHashedSkiplist @see REDAHashedSkiplist */ #define REDA_SUBMODULE_MASK_HASHED_SKIPLIST (0x0400) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDATable or REDAWeakReference @see REDATable REDAWeakReference */ #define REDA_SUBMODULE_MASK_TABLE (0x0800) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDADatabase @see REDADatabase RTIEventActiveDatabase */ #define REDA_SUBMODULE_MASK_DATABASE (0x1000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAString @see REDAString */ #define REDA_SUBMODULE_MASK_STRING (0x2000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDADBShell @see REDADBShell */ #define REDA_SUBMODULE_MASK_DBSHELL (0x4000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAUtils @see REDAUtils */ #define REDA_SUBMODULE_MASK_UTILS (0x8000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDABloomFilter @see REDABloomFilter */ #define REDA_SUBMODULE_MASK_BLOOM_FILTER (0x10000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAHashedSkiplist @see REDAHashedSkiplist */ #define REDA_SUBMODULE_MASK_INLINE_MEMORY (0x20000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDAPluggableMemoryAllocator @see REDAPluggableMemoryAllocator */ #define REDA_SUBMODULE_MASK_PLUGGABLE_MEMORY_ALLOCATOR (0x40000) /*e \ingroup REDALogClass \brief Turn off this bit if you don't want log coming from REDASharedPointer @see REDASharedPointer */ #define REDA_SUBMODULE_MASK_SHARED_POINTER (0x80000) /*e \ingroup REDALogClass \brief Convenient way to say "log all submodules" */ #define REDA_SUBMODULE_MASK_ALL RTI_LOG_SUBMODULE_MASK_ALL /*e \ingroup REDALogClass \brief Log message when concurrent queue write failed. Most likely, the reader forgot to release the zero copy buffer. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CONCURRENT_QUEUE_START_WRITE_FAILURE; /*e \ingroup REDALogClass \brief Log message when failure to take or give exclusive area. Most likely, the deadlock possibility (not certainly) occured, or the exclusive area level was breached. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_EXCLUSIVE_AREA_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to get handle to a thread specific object that is supposed to have been created already. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_GET_OBJECT_FAILURE; /*e \ingroup REDALogClass \brief Log message when failed to create a thread specific object */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_CREATE_OBJECT_FAILURE; /*e \ingroup REDALogClass * @brief Log message when error associating the worker with the Activity * Context. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_ASSOCIATE_ACTIVITY_CONTEXT_FAILURE_s; /*e \ingroup REDALogClass * @brief Log message when error storing the worker in the TSS. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_STORE_TSS_FAILURE_s; /*e \ingroup REDALogClass * @brief Log message when error associating the worker with the thread. */ extern REDADllVariable const struct RTILogMessage REDA_LOG_WORKER_ASSOCIATE_THREAD_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to copy the read write area of a record */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_COPY_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to get a weak reference to a record */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_CREATE_WR_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to go to a record given a key */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_GOTO_KEY_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to go to a record given a weak record */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_GOTO_WR_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to lock a table */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_LOCK_TABLE_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to modify the read write area of a record */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_MODIFY_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to remove a record from a table */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_REMOVE_RECORD_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to remove a table from the database */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_REMOVE_TABLE_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to start a view of table */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_START_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to get key */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_GET_KEY_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to get read only area */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_GET_READ_ONLY_AREA_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to get weak reference */ extern REDADllVariable const struct RTILogMessage REDA_LOG_CURSOR_GET_WR_FAILURE_s; /*e \ingroup REDALogClass \brief Log message when failed to create a table in a database */ extern REDADllVariable const struct RTILogMessage REDA_LOG_DATABASE_CREATE_TABLE_FAILURE_s; #ifdef __cplusplus } /* extern "C" */ #endif #include "reda/reda_log_impl.h" #endif /* reda_log_h */