1 #include "hmbdc/Copyright.hpp" 4 #include "hmbdc/pattern/LockFreeBufferMisc.hpp" 5 #include "hmbdc/os/Allocators.hpp" 7 #include "hmbdc/Config.hpp" 15 namespace hmbdc {
namespace pattern {
17 template <u
int16_t MAX_PARALLE_CONSUMER>
19 using Sequence = HMBDC_SEQ_TYPE;
21 using value_type =
void *;
24 max_parallel_consumer = MAX_PARALLE_CONSUMER
27 template <
typename Allocator = os::DefaultAllocator>
28 LockFreeBufferT(
size_t, uint32_t, Allocator& allocator = os::DefaultAllocator::instance);
31 size_t capacity()
const;
32 size_t maxItemSize()
const;
34 void put(
void const*,
size_t sizeHint = 0);
35 template <
typename T>
void put(T
const& item) {put(&item,
sizeof(T));}
37 bool tryPut(
void const*,
size_t sizeHint = 0);
38 template <
typename T>
bool tryPut(T
const& item) {
return tryPut(&item,
sizeof(T));}
40 void killPut(
void const*,
size_t sizeHint = 0);
42 template <
typename T>
void killPut(T
const& item) {killPut(&item,
sizeof(T));}
44 template <
typename T,
typename ...Args>
45 void putInPlace(Args&&... args) {
47 new (*s) T(std::forward<Args>(args)...);
52 Sequence readSeq(uint16_t PARALLEL_CONSUMER_INDEX)
const;
61 void markDead(uint16_t);
64 T take(uint16_t PARALLEL_CONSUMER_INDEX) {
66 take(PARALLEL_CONSUMER_INDEX, &res,
sizeof(res));
70 void take(uint16_t PARALLEL_CONSUMER_INDEX,
void *,
size_t = 0);
71 void takeReentrant(uint16_t PARALLEL_CONSUMER_INDEX,
void *,
size_t = 0);
72 iterator peek(uint16_t PARALLEL_CONSUMER_INDEX)
const;
74 ,
size_t maxPeekSize = std::numeric_limits<size_t>::max())
const;
75 void waste(uint16_t PARALLEL_CONSUMER_INDEX,
size_t);
76 void wasteAfterPeek(uint16_t PARALLEL_CONSUMER_INDEX,
size_t);
77 void catchUpWith(uint16_t PARALLEL_CONSUMER_INDEX, uint16_t);
78 void catchUpTo(uint16_t PARALLEL_CONSUMER_INDEX, Sequence);
80 size_t remainingSize(uint16_t PARALLEL_CONSUMER_INDEX)
const;
81 size_t remainingSize()
const;
82 size_t parallelConsumerAlive()
const;
83 void reset(uint16_t PARALLEL_CONSUMER_INDEX);
86 size_t footprint(
size_t, uint32_t);
90 unusedConsumerIndexes()
const;
94 bool allocateFromHeap_;
Definition: LockFreeBufferMisc.hpp:23
Definition: LockFreeBufferT.hpp:18
Definition: Client.hpp:11
Definition: LockFreeBufferMisc.hpp:73