2 #ifndef _MADARA_CONTAINERS_QUEUE_INL_
3 #define _MADARA_CONTAINERS_QUEUE_INL_
49 queue_(name,
knowledge, size, false, settings),
61 queue_(name,
knowledge, size, false, settings),
73 settings_(rhs.settings_)
81 MADARA_GUARD_TYPE guard(mutex_), guard2(rhs.
mutex_);
84 this->name_ = rhs.
name_;
86 this->head_ = rhs.
head_;
87 this->tail_ = rhs.
tail_;
94 const Queue& value)
const
100 const Queue& value)
const
105 template<
typename... Args>
113 if (
context_ && name_ !=
"" && count_ > 0)
116 MADARA_GUARD_TYPE guard(mutex_);
130 MADARA_GUARD_TYPE guard(mutex_);
135 result =
context_->get(queue_.vector_[index], settings_);
142 MADARA_GUARD_TYPE guard(mutex_);
148 return queue_.size();
153 return (
size_t)(*count_);
161 MADARA_GUARD_TYPE guard(mutex_);
163 queue_.resize(size,
false);
176 MADARA_GUARD_TYPE guard(mutex_);
180 settings_ = settings;
191 MADARA_GUARD_TYPE guard(mutex_);
192 context_->set_quality(name_, quality,
true, settings);
const ThreadSafeContext * context_
madara::knowledge::KnowledgeRecord KnowledgeRecord
A thread-safe guard for a context or knowledge base.
This class provides a distributed knowledge base to users.
This class encapsulates an entry in a KnowledgeBase.
Settings for applying knowledge updates.
Settings for applying knowledge updates.
Provides an interface for external functions into the MADARA KaRL variable settings.
This class stores thread-safe queue within the knowledge base.
ThreadSafeContext * context_
Variable context that we are modifying.
void set_quality(uint32_t quality, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false))
Sets the quality of writing to the counter variables.
Integer count_
Count of elements in queue.
size_t count(void)
Returns the number of records in the queue.
Integer tail_
Tail of the queue.
void operator=(const Queue &rhs)
Assignment operator.
size_t size(void)
Returns the maximum size of the queue.
void resize(int size=-1)
Resizes the queue.
void clear(void)
Clears the queue.
KnowledgeUpdateSettings set_settings(const KnowledgeUpdateSettings &settings)
Sets the update settings for the variable.
Queue(const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings())
Default constructor.
std::string name_
Prefix of variable.
std::string get_name(void) const
Returns the name of the variable.
MADARA_LOCK_TYPE mutex_
guard for access and changes
KnowledgeUpdateSettings settings_
Settings for modifications.
bool operator!=(const Queue &value) const
Checks for inequality.
bool emplace(Args &&... args)
Enqueues a new record to the end of the queue.
knowledge::KnowledgeRecord inspect(size_t position)
Retrieves a record at a position in the queue.
bool operator==(const Queue &value) const
Checks for equality.
Integer head_
Head of the queue.
Vector queue_
Underlying array of records.
Provides functions and classes for the distributed knowledge base.