diff options
| author | mjkwiatkowski <mati.rewa@gmail.com> | 2026-02-10 08:14:41 +0100 |
|---|---|---|
| committer | mjkwiatkowski <mati.rewa@gmail.com> | 2026-02-10 08:14:41 +0100 |
| commit | 4d37bbed4a1f745c331ba996fc860d79e3e51e8f (patch) | |
| tree | 69d4e530f1f5a5192f98bb422d46618afb291c23 /opendc-experiments/opendc-experiments-base | |
| parent | 7a078fac132d10933e52edafd0f2527c50c9b1b6 (diff) | |
Diffstat (limited to 'opendc-experiments/opendc-experiments-base')
2 files changed, 45 insertions, 1 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt index d231b93b..27348ece 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt @@ -25,20 +25,32 @@ package org.opendc.experiments.base.runner import com.github.ajalt.clikt.core.CliktCommand +import com.github.ajalt.clikt.parameters.options.default import com.github.ajalt.clikt.parameters.options.defaultLazy +import com.github.ajalt.clikt.parameters.options.help import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.types.file +import com.github.ajalt.clikt.parameters.types.int import org.opendc.experiments.base.experiment.getExperiment import java.io.File +import java.net.InetAddress +import java.net.ServerSocket /** * Main entrypoint of the application. */ -public fun main(args: Array<String>): Unit = ExperimentCommand().main(args) +public fun main(args: Array<String>) { + if(args.size == 2){ + ExperimentCommand().main(args) + return + } + ExperimentListener().main(args) +} /** * Represents the command for the Scenario experiments. */ + internal class ExperimentCommand : CliktCommand(name = "experiment") { /** * The path to the environment directory. @@ -52,3 +64,25 @@ internal class ExperimentCommand : CliktCommand(name = "experiment") { runExperiment(experiment) } } + +/** + * This class parses the CLI arguments and creates a socket for the listener. + * Parameters below are the expected CLI arguments in respective order. + * @param port The port to listen to. + * @param backlog The number of available connections. + * @param address The address to bind to. + */ +internal class ExperimentListener: CliktCommand(name = "listener") { + private val port : Int by option("--port").int().default(8080).help("port to listen to") + private val backlog : Int by option("--backlog").int().default(8080).help("number of connections") + private val address : String by option("--address").default("127.0.0.1").help("address to bind to") + + override fun run() { + val inetAddress = InetAddress.getByName(address) + require(port in 1..<65536) { "Port must be between 0 and 65536" } + require(backlog in 1..<50) { "Backlog must be between 1 and 50" } + + val serverSocket = ServerSocket(port, backlog, inetAddress) + runListener(serverSocket) + } +} diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt index 079db6fc..83dbe6ac 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt @@ -25,6 +25,8 @@ package org.opendc.experiments.base.runner import me.tongfei.progressbar.ProgressBarBuilder import me.tongfei.progressbar.ProgressBarStyle import org.opendc.experiments.base.experiment.Scenario +import java.net.ServerSocket + /** * Run scenario when no pool is available for parallel execution @@ -58,3 +60,11 @@ public fun runExperiment(experiment: List<Scenario>) { } pb.close() } + +/** + * Accepts and processes incoming requests. + * @param socket The socket to listen to. + */ +public fun runListener(socket: ServerSocket) { + println("Hello!") +}
\ No newline at end of file |
