/home/runner/work/HiCR/HiCR/include/hicr/frontends/channel/variableSize/spsc/consumer.hpp Source File
|
HiCR
|
consumer.hpp
Go to the documentation of this file.
121 HICR_THROW_LOGIC("Attempting to peek for a token with position (%lu), which is beyond than the channel capacity (%lu)", pos, getCircularBufferForCounts()->getCapacity());
128 HICR_THROW_RUNTIME("Attempting to peek position (%lu) but not enough tokens (%lu) are in the buffer", pos, getCircularBufferForCounts()->getDepth());
131 const size_t bufferPos = (getCircularBufferForCounts()->getTailPosition() + pos) % getCircularBufferForCounts()->getCapacity();
145 __INLINE__ static size_t getPayloadBufferSize(const size_t payloadSize) noexcept { return payloadSize * 2; }
164 HICR_THROW_RUNTIME("Attempting to peek position (%lu) but not enough tokens (%lu) are in the buffer", pos, getCircularBufferForCounts()->getDepth());
168 result[0] = getCircularBufferForPayloads()->getTailPosition() % getCircularBufferForPayloads()->getCapacity();
209 HICR_THROW_LOGIC("Attempting to pop (%lu) tokens, which is larger than the channel capacity (%lu)", n, getCircularBufferForCounts()->getCapacity());
216 HICR_THROW_RUNTIME("Attempting to pop (%lu) tokens, which is more than the number of current tokens in the channel (%lu)", n, getCircularBufferForCounts()->getDepth());
225 coordinationCommunicationManager->memcpy(_producerCoordinationBufferForCounts, /* destination */
305 if (coordinationCircularBuffer->getDepth() == coordinationCircularBuffer->getCapacity()) return true;
317 [[nodiscard]] std::shared_ptr<GlobalMemorySlot> getPayloadBufferMemorySlot() const { return _payloadBuffer; }
Definition communicationManager.hpp:54
__INLINE__ CommunicationManager * getCoordinationCommunicationManager() const
Definition base.hpp:229
Definition base.hpp:41
__INLINE__ auto getCircularBufferForPayloads() const
Definition base.hpp:101
__INLINE__ auto getCoordinationBufferForPayloads() const
Definition base.hpp:113
__INLINE__ auto getCoordinationBufferForCounts() const
Definition base.hpp:107
__INLINE__ auto getCircularBufferForCounts() const
Definition base.hpp:95
Definition consumer.hpp:42
__INLINE__ void pop(const size_t n=1)
Definition consumer.hpp:206
Consumer(CommunicationManager &coordinationCommunicationManager, CommunicationManager &payloadCommunicationManager, std::shared_ptr< GlobalMemorySlot > payloadBuffer, std::shared_ptr< GlobalMemorySlot > tokenBuffer, const std::shared_ptr< LocalMemorySlot > &internalCoordinationBufferForCounts, const std::shared_ptr< LocalMemorySlot > &internalCoordinationBufferForPayloads, const std::shared_ptr< GlobalMemorySlot > &producerCoordinationBufferForCounts, std::shared_ptr< GlobalMemorySlot > producerCoordinationBufferForPayloads, const size_t payloadCapacity, const size_t capacity)
Definition consumer.hpp:69
bool isFull(size_t requiredBufferSize)
Definition consumer.hpp:302
std::shared_ptr< GlobalMemorySlot > getPayloadBufferMemorySlot() const
Definition consumer.hpp:317
size_t getOldPayloadBytes(size_t n)
Definition consumer.hpp:180
__INLINE__ void updateDepth()
Definition consumer.hpp:247
__INLINE__ size_t basePeek(const size_t pos=0)
Definition consumer.hpp:117
size_t getCoordinationDepth()
Definition consumer.hpp:265
static __INLINE__ size_t getPayloadBufferSize(const size_t payloadSize) noexcept
Definition consumer.hpp:145
size_t getPayloadDepth()
Definition consumer.hpp:279
__INLINE__ std::array< size_t, 2 > peek(const size_t pos=0)
Definition consumer.hpp:157
extends channel::Base into a base enabling var-size messages
Generated by