@@ -28,3 +28,63 @@ $ cmake ..
28
28
$ make
29
29
$ ./disruptor4cpp_test
30
30
```
31
+
32
+ To use it, include the below header file
33
+ ``` cpp
34
+ #include < disruptor4cpp/disruptor4cpp.h>
35
+ ```
36
+
37
+ ## Example
38
+ ``` cpp
39
+ #include < cstdint>
40
+ #include < exception>
41
+ #include < iostream>
42
+ #include < thread>
43
+
44
+ #include < disruptor4cpp/disruptor4cpp.h>
45
+
46
+ class int_handler : public disruptor4cpp ::event_handler<int >
47
+ {
48
+ public:
49
+ int_handler() = default;
50
+ virtual ~ int_handler() = default;
51
+ virtual void on_start() { }
52
+ virtual void on_shutdown() { }
53
+ virtual void on_event(int& event, int64_t sequence, bool end_of_batch)
54
+ {
55
+ std::cout << "Received integer: " << event << std::endl;
56
+ }
57
+ virtual void on_timeout(int64_t sequence) { }
58
+ virtual void on_event_exception(const std::exception& ex, int64_t sequence, int* event) { }
59
+ virtual void on_start_exception(const std::exception& ex) { }
60
+ virtual void on_shutdown_exception(const std::exception& ex) { }
61
+ };
62
+
63
+ int main (int argc, char* argv[ ] )
64
+ {
65
+ using namespace disruptor4cpp;
66
+
67
+ // Create the ring buffer.
68
+ ring_buffer<int, 1024, busy_spin_wait_strategy, producer_type::multi> ring_buffer;
69
+
70
+ // Create and run the consumer on another thread.
71
+ auto barrier = ring_buffer.new_barrier();
72
+ int_handler handler;
73
+ batch_event_processor<decltype(ring_buffer)> processor(ring_buffer, std::move(barrier), handler);
74
+ std::thread processor_thread([&processor] { processor.run(); });
75
+
76
+ // Publish some integers.
77
+ for (int i = 0; i < 1000; i++)
78
+ {
79
+ int64_t seq = ring_buffer.next();
80
+ ring_buffer[seq] = i;
81
+ ring_buffer.publish(seq);
82
+ }
83
+
84
+ // Stop the consumer.
85
+ std::this_thread::sleep_for(std::chrono::seconds(1));
86
+ processor.halt();
87
+ processor_thread.join();
88
+ return 0;
89
+ }
90
+ ```
0 commit comments