Skip to content

Commit 85ed1c4

Browse files
committed
Expose SessionToken
1 parent c088190 commit 85ed1c4

File tree

5 files changed

+15
-6
lines changed

5 files changed

+15
-6
lines changed

src/Equinox.Cosmos/Cosmos.fs

+3-2
Original file line numberDiff line numberDiff line change
@@ -752,8 +752,9 @@ module internal Tip =
752752
type [<NoComparison>] Token = { container: Container; stream: string; pos: Position }
753753
module Token =
754754
let create (container,stream) pos : StreamToken =
755-
{ value = box { container = container; stream = stream; pos = pos }
756-
version = pos.index }
755+
{ value = box { container = container; stream = stream; pos = pos }
756+
version = pos.index
757+
sessionToken = null }
757758
let (|Unpack|) (token: StreamToken) : Container*string*Position = let t = unbox<Token> token.value in t.container,t.stream,t.pos
758759
let supersedes (Unpack (_,_,currentPos)) (Unpack (_,_,xPos)) =
759760
let currentVersion, newVersion = currentPos.index, xPos.index

src/Equinox.EventStore/EventStore.fs

+2-1
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,8 @@ module Token =
317317
{ value = box {
318318
stream = { name = streamName}
319319
pos = { streamVersion = streamVersion; compactionEventNumber = compactionEventNumber; batchCapacityLimit = batchCapacityLimit } }
320-
version = streamVersion }
320+
version = streamVersion
321+
sessionToken = null }
321322

322323
/// No batching / compaction; we only need to retain the StreamVersion
323324
let ofNonCompacting streamName streamVersion : StreamToken =

src/Equinox.MemoryStore/MemoryStore.fs

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ module private Token =
4545

4646
let private streamTokenOfIndex streamName (streamVersion : int) : StreamToken =
4747
{ value = box { streamName = streamName; streamVersion = streamVersion }
48-
version = int64 streamVersion }
48+
version = int64 streamVersion
49+
sessionToken = null }
4950
let (|Unpack|) (token: StreamToken) : Token = unbox<Token> token.value
5051
/// Represent a stream known to be empty
5152
let ofEmpty streamName initial = streamTokenOfIndex streamName -1, initial

src/Equinox.SqlStreamStore/SqlStreamStore.fs

+2-1
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,8 @@ module Token =
298298
{ value = box {
299299
stream = { name = streamName}
300300
pos = { streamVersion = streamVersion; compactionEventNumber = compactionEventNumber; batchCapacityLimit = batchCapacityLimit } }
301-
version = streamVersion }
301+
version = streamVersion
302+
sessionToken = null }
302303
/// No batching / compaction; we only need to retain the StreamVersion
303304
let ofNonCompacting streamName streamVersion : StreamToken =
304305
create None None streamName streamVersion

src/Equinox/Flow.fs

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ open Serilog
66

77
/// Store-specific opaque token to be used for synchronization purposes
88
[<NoComparison>]
9-
type StreamToken = { value : obj; version: int64 }
9+
type StreamToken = { value : obj; version: int64; sessionToken : string }
1010

1111
/// Internal type used to represent the outcome of a TrySync operation
1212
[<NoEquality; NoComparison; RequireQualifiedAccess>]
@@ -36,6 +36,10 @@ type ISyncContext<'state> =
3636
/// Exposes the underlying Store's internal Version/Index (which, depending on the Codec, may or may not be reflected in the last event presented)
3737
abstract member Version : int64
3838

39+
/// Exposes the underlying Store's internal SessionToken
40+
// (relevant to CosmosDB)
41+
abstract member SessionToken : string
42+
3943
/// The present State of the stream within the context of this Flow
4044
abstract member State : 'state
4145

@@ -61,6 +65,7 @@ module internal Flow =
6165
member __.CreateMemento() = tokenAndState
6266
member __.State = snd tokenAndState
6367
member __.Version = (fst tokenAndState).version
68+
member __.SessionToken = (fst tokenAndState).sessionToken
6469

6570
member __.TryWithoutResync(log : ILogger, events) : Async<bool> =
6671
trySyncOr log events (fun _resync -> async { return false })

0 commit comments

Comments
 (0)