summaryrefslogtreecommitdiff
path: root/opendc-trace/opendc-trace-api/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-trace/opendc-trace-api/src/main')
-rw-r--r--opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt19
1 files changed, 14 insertions, 5 deletions
diff --git a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt
index dafc0798..11e032c7 100644
--- a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt
+++ b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt
@@ -46,11 +46,7 @@ public abstract class CompositeTableReader : TableReader {
protected abstract fun nextReader(): TableReader?
override fun nextRow(): Boolean {
- if (!hasStarted) {
- assert(delegate == null) { "Duplicate initialization" }
- delegate = nextReader()
- hasStarted = true
- }
+ tryStart()
var delegate = delegate
@@ -68,6 +64,8 @@ public abstract class CompositeTableReader : TableReader {
}
override fun resolve(column: TableColumn<*>): Int {
+ tryStart()
+
val delegate = delegate
return delegate?.resolve(column) ?: -1
}
@@ -107,4 +105,15 @@ public abstract class CompositeTableReader : TableReader {
}
override fun toString(): String = "CompositeTableReader"
+
+ /**
+ * Try to obtain the initial delegate.
+ */
+ private fun tryStart() {
+ if (!hasStarted) {
+ assert(delegate == null) { "Duplicate initialization" }
+ delegate = nextReader()
+ hasStarted = true
+ }
+ }
}