@@ -6,11 +6,11 @@ import com.github.michaelbull.result.Result
66import com.github.michaelbull.result.flatMap
77import com.github.michaelbull.result.getOr
88import kotlinx.datetime.Clock
9+ import okio.FileSystem
10+ import okio.Path
911import kotlin.math.abs
1012import kotlin.math.max
1113import kotlin.math.pow
12- import okio.FileSystem
13- import okio.Path
1414
1515/* *
1616 * Implementation of a HLC [1][2]
@@ -24,7 +24,7 @@ import okio.Path
2424data class HybridLogicalClock (
2525 val timestamp : Timestamp = Timestamp .now(Clock .System ),
2626 val node : NodeID = NodeID .mint(),
27- val counter : Int = 0
27+ val counter : Int = 0 ,
2828) : Comparable<HybridLogicalClock> {
2929
3030 companion object {
@@ -37,12 +37,14 @@ data class HybridLogicalClock(
3737 fun localTick (
3838 local : HybridLogicalClock ,
3939 wallClockTime : Timestamp = Timestamp .now(Clock .System ),
40- maxClockDrift : Int = 1000 * 60
40+ maxClockDrift : Int = 1000 * 60,
4141 ): Result <HybridLogicalClock , HLCError > {
4242 return if (wallClockTime.epochMillis > local.timestamp.epochMillis) {
4343 Ok (local.copy(timestamp = wallClockTime))
44- } else Ok (local.copy(counter = local.counter + 1 )).flatMap { clock ->
45- validate(clock, wallClockTime, maxClockDrift)
44+ } else {
45+ Ok (local.copy(counter = local.counter + 1 )).flatMap { clock ->
46+ validate(clock, wallClockTime, maxClockDrift)
47+ }
4648 }
4749 }
4850
@@ -53,7 +55,7 @@ data class HybridLogicalClock(
5355 local : HybridLogicalClock ,
5456 remote : HybridLogicalClock ,
5557 wallClockTime : Timestamp = Timestamp .now(Clock .System ),
56- maxClockDrift : Int = 1000 * 60
58+ maxClockDrift : Int = 1000 * 60,
5759 ): Result <HybridLogicalClock , HLCError > {
5860 return when {
5961 local.node.identifier == remote.node.identifier -> {
@@ -119,7 +121,7 @@ data class HybridLogicalClock(
119121 * val directory = "/Users/alice".toPath()
120122 * HybridLogicalClock.store(hlc, path)
121123 */
122- fun store (hlc : HybridLogicalClock , directory : Path , fileSystem : FileSystem = FileSystem .SYSTEM , fileName : String = CLOCK_FILE ) {
124+ fun store (hlc : HybridLogicalClock , directory : Path , fileSystem : FileSystem = FileSystem .SYSTEM , fileName : String = CLOCK_FILE ) {
123125 fileSystem.createDirectories(directory)
124126 val filepath = directory / fileName
125127 fileSystem.write(filepath) {
@@ -136,9 +138,9 @@ data class HybridLogicalClock(
136138 * val directory = "/Users/alice".toPath()
137139 * val nullableClock = HybridLogicalClock.load(path)
138140 */
139- fun load (directory : Path , fileSystem : FileSystem = FileSystem .SYSTEM , fileName : String = CLOCK_FILE ) : HybridLogicalClock ? {
141+ fun load (directory : Path , fileSystem : FileSystem = FileSystem .SYSTEM , fileName : String = CLOCK_FILE ): HybridLogicalClock ? {
140142 val filepath = directory / fileName
141- if (! fileSystem.exists(filepath)) {
143+ if (! fileSystem.exists(filepath)) {
142144 return null
143145 }
144146 val encoded = fileSystem.read(filepath) { readUtf8() }
0 commit comments