YARP
Yet Another Robot Platform
FixedSizeBuffersManager.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef YARP_DEV_IMPL_FIXEDSIZEBUFFERSMANAGER_H
7 #define YARP_DEV_IMPL_FIXEDSIZEBUFFERSMANAGER_H
8 
9 #include <vector>
10 #include <mutex>
11 
12 
13 namespace yarp {
14 namespace dev {
15 namespace impl {
16 
17 
22 template <typename T>
23 class Buffer
24 {
25 public:
26  uint32_t key;
27  T* dataPtr;
28  uint32_t numOfElements;
29 
33  Buffer();
34 
38  ~Buffer();
39 
43  T* getData();
44 
48  uint32_t getSize();
49 
56  T getValue(uint32_t index);
57 
64  void setValue(uint32_t index, T value);
65 
69  T& operator[](uint32_t index);
70 };
71 
72 
83 template <typename T>
85 {
86 public:
92  explicit FixedSizeBuffersManager(uint32_t sizeOfBuffers, std::size_t initialNumOfBuffers = 3);
93 
100 
109 
114 
123 
129  void printBuffers();
130 
131 private:
132  std::mutex m_mutex;
133  std::vector<T*> m_buffers;
134  std::vector<bool> m_usedBuffers;
135  std::size_t m_numElem;
136  uint32_t m_firstFreeBuff; //euristic
137 };
138 
139 
140 } // namespace impl
141 } // namespace dev
142 } // namespace yarp
143 
145 
146 #endif // YARP_DEV_IMPL_FIXEDSIZEBUFFERSMANAGER_H
Buffer contains info about a buffer of type T and it is used to exchange information with yarp::dev::...
T * getData()
Return the data pointer.
~Buffer()
Destructor.Note that the memory will not deallocated.
T & operator[](uint32_t index)
Access specified element.
T getValue(uint32_t index)
Return the value contained in the buffer at index index.
uint32_t getSize()
Return the number of element of buffer.
void setValue(uint32_t index, T value)
Set the value @value in the buffer at index index.
A manager of fixed size buffers in multi-thread environment.
FixedSizeBuffersManager(uint32_t sizeOfBuffers, std::size_t initialNumOfBuffers=3)
Constructor.
std::size_t getBufferSize()
Get the number of elements of a buffer.
Buffer< T > getBuffer()
Get a buffer and fill its information in @buffer.
void releaseBuffer(Buffer< T > &buffer)
Release a buffer.
The main, catch-all namespace for YARP.
Definition: dirs.h:16