| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SEQUENCER_H |
| #define SEQUENCER_H |
| |
| #include "magma_util/macros.h" |
| |
| class Sequencer { |
| public: |
| Sequencer(uint32_t first_sequence_number) : next_sequence_number_(first_sequence_number) {} |
| |
| uint32_t next_sequence_number() |
| { |
| uint32_t sequence_number = next_sequence_number_++; |
| // Overflow not handled yet. |
| DASSERT(next_sequence_number_ >= sequence_number); |
| return sequence_number; |
| } |
| |
| static constexpr uint32_t kInvalidSequenceNumber = 0; |
| |
| private: |
| uint32_t next_sequence_number_; |
| }; |
| |
| #endif // SEQUENCER_H |