CCF
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Functions
ring_buffer_types.h File Reference
#include "ccf/ds/hash.h"
#include "ccf/ds/nonstd.h"
#include "serializer.h"
#include <atomic>
#include <fmt/format.h>
#include <optional>
#include <span>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

struct  ringbuffer::Offsets
 
class  ringbuffer::message_error
 
class  ringbuffer::AbstractWriter
 
class  ringbuffer::AbstractWriterFactory
 
struct  ringbuffer::MessageSerializers< m >
 

Namespaces

namespace  ringbuffer
 

Macros

#define FMT_HEADER_ONLY
 
#define DEFINE_RINGBUFFER_MSG_TYPE(NAME)    NAME = ccf::ds::fnv_1a<ringbuffer::Message>(#NAME)
 Useful machinery.
 
#define DECLARE_RINGBUFFER_MESSAGE_NO_PAYLOAD(MTYPE)
 
#define DECLARE_RINGBUFFER_MESSAGE_PAYLOAD(MTYPE, ...)
 
#define RINGBUFFER_WRITE_MESSAGE(MSG, ...)    ringbuffer::write_message_with_error_wrapper<MSG>(#MSG, __VA_ARGS__)
 
#define RINGBUFFER_TRY_WRITE_MESSAGE(MSG, ...)    ringbuffer::try_write_message_with_error_wrapper<MSG>(#MSG, __VA_ARGS__)
 

Typedefs

using ringbuffer::Message = uint32_t
 
using ringbuffer::WriterPtr = std::shared_ptr< AbstractWriter >
 

Functions

template<ringbuffer::Message m, typename WriterPtr , typename... Ts>
void ringbuffer::write_message (const WriterPtr &w, Ts &&... ts)
 
template<ringbuffer::Message m, typename WriterPtr , typename... Ts>
bool ringbuffer::try_write_message (const WriterPtr &w, Ts &&... ts)
 
template<ringbuffer::Message m>
auto ringbuffer::read_message (const uint8_t *&data, size_t &size)
 
template<ringbuffer::Message m>
auto ringbuffer::read_message (std::span< const uint8_t > &span)
 
template<ringbuffer::Message m, typename... Ts>
void ringbuffer::write_message_with_error_wrapper (char const *prefix, Ts &&... ts)
 
template<ringbuffer::Message m, typename... Ts>
bool ringbuffer::try_write_message_with_error_wrapper (char const *prefix, Ts &&... ts)
 

Macro Definition Documentation

◆ DECLARE_RINGBUFFER_MESSAGE_NO_PAYLOAD

#define DECLARE_RINGBUFFER_MESSAGE_NO_PAYLOAD (   MTYPE)
Value:
template <> \
{};
Definition serializer.h:195
Definition ring_buffer_types.h:167

◆ DECLARE_RINGBUFFER_MESSAGE_PAYLOAD

#define DECLARE_RINGBUFFER_MESSAGE_PAYLOAD (   MTYPE,
  ... 
)
Value:
template <> \
: public serializer::PreciseSerializer<__VA_ARGS__> \
{};
Definition serializer.h:457

◆ DEFINE_RINGBUFFER_MSG_TYPE

#define DEFINE_RINGBUFFER_MSG_TYPE (   NAME)     NAME = ccf::ds::fnv_1a<ringbuffer::Message>(#NAME)

Useful machinery.

◆ FMT_HEADER_ONLY

#define FMT_HEADER_ONLY

◆ RINGBUFFER_TRY_WRITE_MESSAGE

#define RINGBUFFER_TRY_WRITE_MESSAGE (   MSG,
  ... 
)     ringbuffer::try_write_message_with_error_wrapper<MSG>(#MSG, __VA_ARGS__)

◆ RINGBUFFER_WRITE_MESSAGE

#define RINGBUFFER_WRITE_MESSAGE (   MSG,
  ... 
)     ringbuffer::write_message_with_error_wrapper<MSG>(#MSG, __VA_ARGS__)

Macros to catch message-related errors and translate to a human-readable message name