| 1234567891011121314151617181920212223242526272829303132333435 | 
							- #pragma once
 
- #include <cstdint>  // for uint8_t
 
- #include <cstring>  // for size_t
 
- #include <memory>   // for unique_ptr
 
- #include <mutex>    // for mutex
 
- #include <vector>   // for vector
 
- #include "WrappedSemaphore.h"  // for WrappedSemaphore
 
- namespace bell {
 
- class CircularBuffer {
 
-  public:
 
-   CircularBuffer(size_t dataCapacity);
 
-   std::unique_ptr<bell::WrappedSemaphore> dataSemaphore;
 
-   size_t size() const { return dataSize; }
 
-   size_t capacity() const { return dataCapacity; }
 
-   size_t write(const uint8_t* data, size_t bytes);
 
-   size_t read(uint8_t* data, size_t bytes);
 
-   void emptyBuffer();
 
-   void emptyExcept(size_t size);
 
-  private:
 
-   std::mutex bufferMutex;
 
-   size_t begIndex = 0;
 
-   size_t endIndex = 0;
 
-   size_t dataSize = 0;
 
-   size_t dataCapacity = 0;
 
-   std::vector<uint8_t> buffer;
 
- };
 
- }  // namespace bell
 
 
  |