| 25 | } |
| 26 | |
| 27 | void FizzBuzzEventHandler::onEvent(FizzBuzzEvent& data, std::int64_t sequence, bool) |
| 28 | { |
| 29 | switch (m_fizzBuzzStep) |
| 30 | { |
| 31 | case FizzBuzzStep::Fizz: |
| 32 | data.fizz = data.value % 3 == 0; |
| 33 | break; |
| 34 | |
| 35 | case FizzBuzzStep::Buzz: |
| 36 | data.buzz = data.value % 5 == 0; |
| 37 | break; |
| 38 | |
| 39 | case FizzBuzzStep::FizzBuzz: |
| 40 | if (data.fizz && data.buzz) |
| 41 | { |
| 42 | m_fizzBuzzCounter.value = m_fizzBuzzCounter.value + 1; |
| 43 | } |
| 44 | break; |
| 45 | } |
| 46 | |
| 47 | if (sequence == m_iterations - 1) |
| 48 | { |
| 49 | m_latch->set(); |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | } // namespace PerfTests |
| 54 | } // namespace Disruptor |