Menu

CodeExamples

Henrik Baastrup
#include "disruptor.h"
#include "singleThreadedClaimStrategy.h"
#include "yieldingWaitStrategy.h"

EventHandler<MyEvent> *myEventHandler1 = new EventHandler<MyEvent> {...};
EventHandler<MyEvent> *myEventHandler2 = new EventHandler<MyEvent> {...};
EventHandler<MyEvent> *myEventHandler3 = new EventHandler<MyEvent> {...};

EventHandler<MyEvent> **myEventHandlers1 = (EventHandler<TestEvent> **)new    EventHandler<MyEvent>*[2];
EventHandler<MyEvent> **myEventHandlers2 = (EventHandler<TestEvent> **)new EventHandler<MyEvent>*[1];
myEventHandlers1[0] = myEventHandler1;
myEventHandlers1[1] = myEventHandler2;
myEventHandlers2[0] = myEventHandler3;

SingleThreadedClaimStrategy claimStrategy(8);
YieldingWaitStrategy waitStrategy;

Disruptor<TestEvent> *disruptor = new Disruptor<TestEvent>(eventInitializer, &claimStrategy, &waitStrategy);
disruptor->handleEventsWith(testEventHandlers1, 2)->then(testEventHandlers2, 1);

RingBuffer<TestEvent> *ringBuffer = disruptor->start();
.
.
.
int64_t sequence = ringBuffer->next();
MyEvent *event = ringBuffer->get(sequence);
... do something with event
ringBuffer->publish(sequence);

Related

Wiki: Home