summaryrefslogtreecommitdiff
path: root/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-09-21 11:34:34 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-09-21 11:34:34 +0200
commit68ef3700ed2f69bcf0118bb69eda71e6b1f4d54f (patch)
tree73201888564accde4cfa107f4ffdb15e9f93d45c /opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt
parentc7fff03408ee3109d0a39a96c043584a2d8f67ca (diff)
feat(trace): Add support for writing traces
This change adds a new API for writing traces in a trace format. Currently, writing is only supported by the OpenDC VM format, but over time the other formats will also have support for writing added.
Diffstat (limited to 'opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt')
-rw-r--r--opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt30
1 files changed, 27 insertions, 3 deletions
diff --git a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt
index 6d0014cb..64e8f272 100644
--- a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt
+++ b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/Trace.kt
@@ -51,21 +51,45 @@ public interface Trace {
* Open a [Trace] at the specified [path] in the given [format].
*
* @param path The path to the trace.
+ * @param format The format of the trace to open.
* @throws IllegalArgumentException if [format] is not supported.
*/
- public fun open(path: File, format: String): Trace {
- return open(path.toPath(), format)
- }
+ @JvmStatic
+ public fun open(path: File, format: String): Trace = open(path.toPath(), format)
/**
* Open a [Trace] at the specified [path] in the given [format].
*
* @param path The [Path] to the trace.
+ * @param format The format of the trace to open.
* @throws IllegalArgumentException if [format] is not supported.
*/
+ @JvmStatic
public fun open(path: Path, format: String): Trace {
val provider = requireNotNull(TraceFormat.byName(format)) { "Unknown format $format" }
return TraceImpl(provider, path)
}
+
+ /**
+ * Create a [Trace] at the specified [path] in the given [format].
+ *
+ * @param path The [Path] to the trace.
+ * @param format The format of the trace to create.
+ */
+ @JvmStatic
+ public fun create(path: File, format: String): Trace = create(path.toPath(), format)
+
+ /**
+ * Create a [Trace] at the specified [path] in the given [format].
+ *
+ * @param path The [Path] to the trace.
+ * @param format The format of the trace to create.
+ */
+ @JvmStatic
+ public fun create(path: Path, format: String): Trace {
+ val provider = requireNotNull(TraceFormat.byName(format)) { "Unknown format $format" }
+ provider.create(path)
+ return TraceImpl(provider, path)
+ }
}
}