Leka
A low-latency C++20 price-time-priority limit order book and matching engine
▶ Replay viewer
Loading...
Searching...
No Matches
sequence_number.hpp
1#ifndef SEQUENCE_NUMBER_HPP
2#define SEQUENCE_NUMBER_HPP
3#include <cstdint>
4#include <compare>
5
6namespace lob {
7/** @brief Monotonic engine sequence used for deterministic processing order. */
9 private:
10 std::uint64_t sequenceNumber;
11
12 public:
13 /** Constructs an invalid, zero-valued sequence number. */
14 explicit SequenceNumber(): sequenceNumber(0){}
15
16 /** Constructs a sequence number from its numeric value. */
17 explicit SequenceNumber(std::uint64_t sequenceNumber): sequenceNumber(sequenceNumber){}
18
19 /** Returns the underlying sequence value. */
20 std::uint64_t getSequenceNumber() const { return sequenceNumber; }
21
22 /** Returns whether the sequence number is nonzero. */
23 bool isValid() const {
24 return sequenceNumber != 0;
25 };
26
27 /** Compares sequence numbers by processing order. */
28 auto operator<=>(const SequenceNumber &other) const = default;
29};
30} // namespace lob
31#endif // SEQUENCE_NUMBER_HPP
auto operator<=>(const SequenceNumber &other) const =default
Compares sequence numbers by processing order.
std::uint64_t getSequenceNumber() const
Returns the underlying sequence value.
SequenceNumber()
Constructs an invalid, zero-valued sequence number.
bool isValid() const
Returns whether the sequence number is nonzero.
SequenceNumber(std::uint64_t sequenceNumber)
Constructs a sequence number from its numeric value.