OpenCPN Partial API docs
Loading...
Searching...
No Matches
CommOutQueue Class Reference

Queue of NMEA0183 messages which only holds a limited amount of each message type. More...

#include <comm_out_queue.h>

Inheritance diagram for CommOutQueue:
CommOutQueueSingle DummyCommOutQueue MeasuredCommOutQueue

Classes

struct  BufferItem
 

Public Member Functions

virtual bool push_back (const std::string &line)
 Insert valid line of NMEA0183 data in buffer.
 
virtual std::string pop ()
 Return next line to send and remove it from buffer, throws exception if empty.
 
virtual int size () const
 Return number of lines in queue.
 
 CommOutQueue (unsigned max_buffered, std::chrono::duration< unsigned, std::milli > min_msg_gap)
 Create a buffer which stores at most max_buffered items of each message, applying rate limits if messages are entered "too" fast.
 
 CommOutQueue (unsigned max_buffered)
 Create a buffer which stores at most max_buffered items of each message.
 
 CommOutQueue ()
 Default buffer, allows 10 buffered messages of each type, applies rate limits when repeated with less than 600 ms intervals.
 
 CommOutQueue (const CommOutQueue &other)=delete
 
CommOutQueueoperator= (const CommOutQueue &)=delete
 

Protected Types

using duration_ms = std::chrono::duration< unsigned, std::milli >
 

Protected Attributes

std::vector< BufferItemm_buffer
 
std::mutex m_mutex
 
int m_size
 
duration_ms m_min_msg_gap
 
bool m_overrun_reported
 
std::set< uint64_t > m_rate_limits_logged
 

Detailed Description

Queue of NMEA0183 messages which only holds a limited amount of each message type.

Definition at line 78 of file comm_out_queue.h.

Member Typedef Documentation

◆ duration_ms

using CommOutQueue::duration_ms = std::chrono::duration<unsigned, std::milli>
protected

Definition at line 136 of file comm_out_queue.h.

Constructor & Destructor Documentation

◆ CommOutQueue() [1/3]

CommOutQueue::CommOutQueue ( unsigned  max_buffered,
std::chrono::duration< unsigned, std::milli >  min_msg_gap 
)

Create a buffer which stores at most max_buffered items of each message, applying rate limits if messages are entered "too" fast.

Parameters
max_bufferedMax number of messages of a type kept in buffer without discarding data as overrun.
min_msg_gapminimum time between two messages of the same type without applying rate limits.

Definition at line 75 of file comm_out_queue.cpp.

◆ CommOutQueue() [2/3]

CommOutQueue::CommOutQueue ( unsigned  max_buffered)
inline

Create a buffer which stores at most max_buffered items of each message.

Definition at line 110 of file comm_out_queue.h.

◆ CommOutQueue() [3/3]

CommOutQueue::CommOutQueue ( )
inline

Default buffer, allows 10 buffered messages of each type, applies rate limits when repeated with less than 600 ms intervals.

Definition at line 116 of file comm_out_queue.h.

Member Function Documentation

◆ pop()

std::string CommOutQueue::pop ( )
virtual

Return next line to send and remove it from buffer, throws exception if empty.

Reimplemented in MeasuredCommOutQueue, and DummyCommOutQueue.

Definition at line 120 of file comm_out_queue.cpp.

◆ push_back()

bool CommOutQueue::push_back ( const std::string &  line)
virtual

Insert valid line of NMEA0183 data in buffer.

Returns
false on errors including invalid input, else true.

Reimplemented in CommOutQueueSingle, MeasuredCommOutQueue, and DummyCommOutQueue.

Definition at line 82 of file comm_out_queue.cpp.

◆ size()

int CommOutQueue::size ( ) const
virtual

Return number of lines in queue.

Reimplemented in DummyCommOutQueue.

Definition at line 130 of file comm_out_queue.cpp.

Member Data Documentation

◆ m_buffer

std::vector<BufferItem> CommOutQueue::m_buffer
protected

Definition at line 133 of file comm_out_queue.h.

◆ m_min_msg_gap

duration_ms CommOutQueue::m_min_msg_gap
protected

Definition at line 137 of file comm_out_queue.h.

◆ m_mutex

std::mutex CommOutQueue::m_mutex
mutableprotected

Definition at line 134 of file comm_out_queue.h.

◆ m_overrun_reported

bool CommOutQueue::m_overrun_reported
protected

Definition at line 138 of file comm_out_queue.h.

◆ m_rate_limits_logged

std::set<uint64_t> CommOutQueue::m_rate_limits_logged
protected

Definition at line 139 of file comm_out_queue.h.

◆ m_size

int CommOutQueue::m_size
protected

Definition at line 135 of file comm_out_queue.h.


The documentation for this class was generated from the following files: