Fledge
An open source edge computing platform for industrial users
readingset_circularbuffer.h
1 #ifndef _READINGSETCIRCULARBUFFER_H
2 #define _READINGSETCIRCULARBUFFER_H
3 /*
4  * Fledge ReadingSet Circular Buffer.
5  *
6  * Copyright (c) 2024 Dianomic Systems
7  *
8  * Released under the Apache 2.0 Licence
9  *
10  * Author: Devki Nandan Ghildiyal
11  */
12 #include <reading_set.h>
13 #include <mutex>
14 #include <vector>
15 #include <memory>
16 
24  public:
25  ReadingSetCircularBuffer(unsigned long maxBufferSize=10);
27 
28  void insert(ReadingSet*);
29  void insert(ReadingSet&);
30  std::vector<std::shared_ptr<ReadingSet>> extract(bool isExtractSingleElement=true);
31 
32  private:
33  std::mutex m_mutex;
34  unsigned long m_maxBufferSize;
35  unsigned long m_nextReadIndex;
36  void appendReadingSet(const std::vector<Reading *>& readings);
38  ReadingSetCircularBuffer& operator=(const ReadingSetCircularBuffer&) = delete;
39  std::vector<std::shared_ptr<ReadingSet>> m_circularBuffer;
40 };
41 
42 #endif
43 
Reading set circular buffer class.
Definition: readingset_circularbuffer.h:23
void insert(ReadingSet *)
Insert a ReadingSet into circular buffer.
Definition: readingset_circularbuffer.cpp:58
Reading set class.
Definition: reading_set.h:26
~ReadingSetCircularBuffer()
Destructor for a result set.
Definition: readingset_circularbuffer.cpp:36
std::vector< std::shared_ptr< ReadingSet > > extract(bool isExtractSingleElement=true)
Fetch the vector of ReadingSet from circular buffer.
Definition: readingset_circularbuffer.cpp:100
ReadingSetCircularBuffer(unsigned long maxBufferSize=10)
Construct an empty reading set circular buffer.
Definition: readingset_circularbuffer.cpp:22