Added WeakRingBuffer - a single-producer/single-consumer queue based on ring buffer
[libcds.git] / test / stress / queue / queue_type.h
index 12fd8cf85fb257446475c1d5dd237e7dc6b16d8d..2e02f218091f2289843133a1b9fe1f1b7f69a5a4 100644 (file)
@@ -40,6 +40,7 @@
 #include <cds/container/fcqueue.h>
 #include <cds/container/fcdeque.h>
 #include <cds/container/segmented_queue.h>
+#include <cds/container/weak_ringbuffer.h>
 
 #include <cds/gc/hp.h>
 #include <cds/gc/dhp.h>
@@ -293,6 +294,29 @@ namespace fc_details{
         };
 
 
+        // WeakRingBuffer
+        struct traits_WeakRingBuffer_dyn: public cds::container::weak_ringbuffer::traits
+        {
+            typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
+        };
+        class WeakRingBuffer_dyn
+            : public cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn >
+        {
+            typedef cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn > base_class;
+        public:
+            WeakRingBuffer_dyn()
+                : base_class( 1024 * 64 )
+            {}
+            WeakRingBuffer_dyn( size_t nCapacity )
+                : base_class( nCapacity )
+            {}
+
+            cds::opt::none statistics() const
+            {
+                return cds::opt::none();
+            }
+        };
+
         // BasketQueue
 
         typedef cds::container::BasketQueue< cds::gc::HP , Value > BasketQueue_HP;
@@ -790,6 +814,9 @@ namespace cds_test {
     CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn       ) \
     CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic    )
 
+#define CDSSTRESS_WeakRingBuffer( test_fixture ) \
+    CDSSTRESS_Queue_F( test_fixture, WeakRingBuffer_dyn       )
+
 #define CDSSTRESS_StdQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \
     CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock  ) \