Class EventSequenceNumber
- Namespace
- Cratis.Chronicle.Events
- Assembly
- Cratis.Chronicle.dll
Represents the sequence number within an event log for an event.
public record EventSequenceNumber : ConceptAs<ulong>, IComparable<ConceptAs<ulong>>, IComparable<ulong>, IComparable, IEquatable<ConceptAs<ulong>>, IEquatable<EventSequenceNumber>
- Inheritance
-
EventSequenceNumber
- Implements
- Inherited Members
- Extension Methods
Constructors
EventSequenceNumber(EventSequenceNumber)
protected EventSequenceNumber(EventSequenceNumber original)
Parameters
originalEventSequenceNumber
EventSequenceNumber(ulong)
Represents the sequence number within an event log for an event.
public EventSequenceNumber(ulong Value)
Parameters
ValueulongThe sequence number.
Fields
BeforeFirst
Gets the value representing the position before the first event.
public static readonly EventSequenceNumber BeforeFirst
Field Value
Remarks
A concurrency scope carrying this number expects no event matching its narrowing to exist yet. Unavailable cannot say that, because it also means "no sequence number was supplied at all", so a scope a strategy resolved against an empty narrowing would be indistinguishable from a scope that asked for nothing. This value distinguishes the two, and the kernel validates it as "no event matching this scope may exist". Unlike Max and Unavailable this is not a wire value and must not become one. A scope crosses the wire saying it expects no matching event in a field of its own, carrying Unavailable as its number, so that a kernel or client on either side of a version mismatch that has never heard of the expectation falls back to skipping the check rather than comparing a real tail against a number nothing can exceed.
First
Gets the first sequence number.
public static readonly EventSequenceNumber First
Field Value
Max
Gets the max sequence number.
public static readonly EventSequenceNumber Max
Field Value
Remarks
The sentinels are wire values, shared with the kernel's own copy of this type - ConcurrencyScope.NotSet
is built from this one on both sides, and a scope crosses the wire as a raw number. Changing a sentinel here
without changing it there makes the same named value mean two different things on the two ends.
Unavailable
Gets the value when the sequence number is unavailable.
public static readonly EventSequenceNumber Unavailable
Field Value
Properties
EqualityContract
protected override Type EqualityContract { get; }
Property Value
IsActualValue
Check if the EventSequenceNumber is an actual value representing a sequence number.
public bool IsActualValue { get; }
Property Value
- bool
True if it can, false if not.
Remarks
Values such as Unavailable, Max and BeforeFirst are not actual values. They are system values used for special purposes.
IsBeforeFirst
Check if the EventSequenceNumber is the position before the first event.
public bool IsBeforeFirst { get; }
Property Value
IsUnavailable
Check if the EventSequenceNumber is unavailable.
public bool IsUnavailable { get; }
Property Value
Methods
Deconstruct(out ulong)
public void Deconstruct(out ulong Value)
Parameters
Valueulong
Equals(EventSequenceNumber?)
public virtual bool Equals(EventSequenceNumber? other)
Parameters
otherEventSequenceNumber
Returns
Equals(ConceptAs<ulong>?)
public override sealed bool Equals(ConceptAs<ulong>? other)
Parameters
Returns
Equals(object?)
public override bool Equals(object? obj)
Parameters
objobject
Returns
GetHashCode()
public override int GetHashCode()
Returns
Next()
Get the next EventSequenceNumber.
public EventSequenceNumber Next()
Returns
- EventSequenceNumber
The next EventSequenceNumber.
PrintMembers(StringBuilder)
protected override bool PrintMembers(StringBuilder builder)
Parameters
builderStringBuilder
Returns
Operators
operator +(EventSequenceNumber, EventSequenceNumber)
Adds a event sequence number with another event sequence number.
public static EventSequenceNumber operator +(EventSequenceNumber left, EventSequenceNumber right)
Parameters
leftEventSequenceNumberEventSequenceNumber to add from.
rightEventSequenceNumberEventSequenceNumber to add.
Returns
- EventSequenceNumber
new event sequence number.
operator +(EventSequenceNumber, int)
Adds a event sequence number with a value.
public static EventSequenceNumber operator +(EventSequenceNumber left, int right)
Parameters
leftEventSequenceNumberEventSequenceNumber to add from.
rightintValue to add.
Returns
- EventSequenceNumber
new event sequence number.
operator +(EventSequenceNumber, ulong)
Adds a event sequence number with a value.
public static EventSequenceNumber operator +(EventSequenceNumber left, ulong right)
Parameters
leftEventSequenceNumberEventSequenceNumber to add from.
rightulongValue to add.
Returns
- EventSequenceNumber
new event sequence number.
operator ==(EventSequenceNumber?, EventSequenceNumber?)
public static bool operator ==(EventSequenceNumber? left, EventSequenceNumber? right)
Parameters
leftEventSequenceNumberrightEventSequenceNumber
Returns
implicit operator EventSequenceNumber(ulong)
Implicitly convert from ulong to EventSequenceNumber.
public static implicit operator EventSequenceNumber(ulong value)
Parameters
valueulongValue to convert from.
Returns
- EventSequenceNumber
A converted EventSequenceNumber.
operator !=(EventSequenceNumber?, EventSequenceNumber?)
public static bool operator !=(EventSequenceNumber? left, EventSequenceNumber? right)
Parameters
leftEventSequenceNumberrightEventSequenceNumber
Returns
operator -(EventSequenceNumber, EventSequenceNumber)
Adds a event sequence number with a value.
public static EventSequenceNumber operator -(EventSequenceNumber left, EventSequenceNumber right)
Parameters
leftEventSequenceNumberEventSequenceNumber to add from.
rightEventSequenceNumberEventSequenceNumber to subtract.
Returns
- EventSequenceNumber
new event sequence number.
operator -(EventSequenceNumber, int)
Adds a event sequence number with a value.
public static EventSequenceNumber operator -(EventSequenceNumber left, int right)
Parameters
leftEventSequenceNumberEventSequenceNumber to subtract from.
rightintValue to add.
Returns
- EventSequenceNumber
new event sequence number.
operator -(EventSequenceNumber, ulong)
Adds a event sequence number with a value.
public static EventSequenceNumber operator -(EventSequenceNumber left, ulong right)
Parameters
leftEventSequenceNumberEventSequenceNumber to subtract from.
rightulongValue to add.
Returns
- EventSequenceNumber
new event sequence number.