Optimistic locking option

This commit is contained in:
2024-05-04 20:57:15 +02:00
parent cc3ac67be6
commit da046fa6ec
10 changed files with 281 additions and 26 deletions

View File

@@ -0,0 +1,33 @@
package nl.astraeus.nl.astraeus.persistence
import java.io.File
import java.io.ObjectInputStream
class TransactionLog(
val directory: File,
) {
val fileManager = FileManager(directory)
fun showTransactions() {
fileManager.findLastSnapshot().let { (after, snapshot) ->
println("Last snapshot: $snapshot")
val transactions = fileManager.findTransactionsAfter(after ?: 0L)
println("Transactions:")
transactions?.forEach { transaction ->
transaction.inputStream().use { input ->
ObjectInputStream(input).use { ois ->
val versionNumber = ois.readInt()
check(versionNumber == 1) { "Unsupported version number: $versionNumber" }
val transactionNumber = ois.readLong()
val actions = ois.readObject() as Set<Action>
println("[$versionNumber] $transactionNumber - ${actions.joinToString(",")}")
}
}
}
}
}
}