This commit is contained in:
2024-05-15 19:28:12 +02:00
parent 7677bac1a6
commit c6f84224b1
4 changed files with 50 additions and 27 deletions

View File

@@ -4,49 +4,51 @@ import java.io.File
import java.io.ObjectInputStream
class TransactionLog(
val directory: File,
directory: File,
) {
val fileManager = FileManager(directory)
fun showTransactions() {
fun showTransactions(printer: (String) -> Unit = ::println) {
fileManager.findLastSnapshot().let { (after, snapshot) ->
println("Last snapshot: $snapshot")
printer("Last snapshot: $snapshot")
println("Snapshot:")
printer("Snapshot:")
snapshot?.inputStream()?.use { input ->
ObjectInputStream(input).use { ois ->
val versionNumber = ois.readInt()
check(versionNumber == 1) { "Unsupported version number: $versionNumber" }
check(versionNumber == 1) {
"Unsupported version number: $versionNumber"
}
val transactionNumber = ois.readLong()
println("[$versionNumber] $transactionNumber")
printer("[$versionNumber] $transactionNumber")
val data = ois.readObject() as MutableMap<Class<*>, TypeData>
println("Data:")
println("\tClasses:")
printer("Data:")
printer("\tClasses:")
for ((cls, entries) in data.entries) {
println("\t\t- $cls: ${entries.data.keys.size}")
printer("\t\t- $cls: ${entries.data.keys.size}")
}
}
}
val transactions = fileManager.findTransactionsAfter(after ?: 0L)
println("Transactions:")
printer("Transactions:")
transactions?.forEach { transaction ->
transaction.inputStream().use { input ->
ObjectInputStream(input).use { ois ->
val versionNumber = ois.readInt()
check(versionNumber == 1) { "Unsupported version number: $versionNumber" }
check(versionNumber == 1) {
"Unsupported version number: $versionNumber"
}
val transactionNumber = ois.readLong()
val actions = ois.readObject() as Set<Action>
println("\t[$transactionNumber]")
printer("\t[$transactionNumber]")
for (action in actions) {
println("\t\t- $action")
printer("\t\t- $action")
}
}
}
}
}
}
}
}