Leka
A low-latency C++20 price-time-priority limit order book and matching engine
▶ Replay viewer
Toggle main menu visibility
Loading...
Searching...
No Matches
sequence_number.hpp
1
#ifndef SEQUENCE_NUMBER_HPP
2
#define SEQUENCE_NUMBER_HPP
3
#include <cstdint>
4
#include <compare>
5
6
namespace
lob {
7
/** @brief Monotonic engine sequence used for deterministic processing order. */
8
class
SequenceNumber
{
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
lob::SequenceNumber::operator<=>
auto operator<=>(const SequenceNumber &other) const =default
Compares sequence numbers by processing order.
lob::SequenceNumber::getSequenceNumber
std::uint64_t getSequenceNumber() const
Returns the underlying sequence value.
Definition
sequence_number.hpp:20
lob::SequenceNumber::SequenceNumber
SequenceNumber()
Constructs an invalid, zero-valued sequence number.
Definition
sequence_number.hpp:14
lob::SequenceNumber::isValid
bool isValid() const
Returns whether the sequence number is nonzero.
Definition
sequence_number.hpp:23
lob::SequenceNumber::SequenceNumber
SequenceNumber(std::uint64_t sequenceNumber)
Constructs a sequence number from its numeric value.
Definition
sequence_number.hpp:17
include
lob
types
sequence_number.hpp
Generated by
1.18.0