deleter(buffer, size, param);
}
-BinaryQueue::BucketVisitor::~BucketVisitor() {
-}
-
-BinaryQueue::BucketVisitorCall::BucketVisitorCall(BucketVisitor *visitor) :
- m_visitor(visitor) {
-}
-
-BinaryQueue::BucketVisitorCall::~BucketVisitorCall() {
-}
-
-void BinaryQueue::BucketVisitorCall::operator()(Bucket *bucket) const {
- m_visitor->onVisitBucket(bucket->ptr, bucket->left);
-}
-
-void BinaryQueue::visitBuckets(BucketVisitor *visitor) const {
- if(visitor == nullptr)
- throw NullPointerException("visitor");
-
- // Visit all buckets
- std::for_each(m_buckets.begin(), m_buckets.end(), BucketVisitorCall(visitor));
-}
-
} // namespace Cynara
size_t bufferSize,
void *userParam);
- class BucketVisitor
- {
- public:
- /**
- * Destructor
- */
- virtual ~BucketVisitor();
-
- /**
- * Visit bucket
- *
- * @return none
- * @param[in] buffer Constant pointer to bucket data buffer
- * @param[in] bufferSize Number of bytes in bucket
- */
- virtual void onVisitBucket(const void *buffer, size_t bufferSize) = 0;
- };
-
private:
struct Bucket
{
static void deleteBucket(Bucket *bucket);
- class BucketVisitorCall
- {
- private:
- BucketVisitor *m_visitor;
-
- public:
- BucketVisitorCall(BucketVisitor *visitor);
- virtual ~BucketVisitorCall();
-
- void operator()(Bucket *bucket) const;
- };
-
public:
/**
* Construct empty binary queue
* is larger than available bytes in binary queue
*/
void flattenConsume(void *buffer, size_t bufferSize);
-
- /**
- * Visit each buffer with data using visitor object
- *
- * @return none
- * @param[in] visitor Pointer to bucket visitor
- * @see BinaryQueue::BucketVisitor
- * @exception Cynara::NullPointerException visitor is nullptr
- */
- void visitBuckets(BucketVisitor *visitor) const;
};
} // namespace Cynara