Get rid of arrow-effects usage
[dcaegen2/collectors/hv-ves.git] / sources / hv-collector-xnf-simulator / src / main / kotlin / org / onap / dcae / collectors / veshv / simulators / xnf / main.kt
index a1042f3..4fcb180 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.onap.dcae.collectors.veshv.simulators.xnf
 
-import arrow.effects.IO
 import io.vavr.collection.HashSet
+import org.onap.dcae.collectors.veshv.commandline.handleWrongArgumentError
 import org.onap.dcae.collectors.veshv.commandline.handleWrongArgumentErrorCurried
 import org.onap.dcae.collectors.veshv.healthcheck.api.HealthDescription
 import org.onap.dcae.collectors.veshv.healthcheck.api.HealthState
@@ -32,9 +32,8 @@ import org.onap.dcae.collectors.veshv.simulators.xnf.impl.config.ArgXnfSimulator
 import org.onap.dcae.collectors.veshv.simulators.xnf.impl.config.ClientConfiguration
 import org.onap.dcae.collectors.veshv.simulators.xnf.impl.config.SimulatorConfiguration
 import org.onap.dcae.collectors.veshv.simulators.xnf.impl.factory.ClientFactory
-import org.onap.dcae.collectors.veshv.utils.arrow.ExitFailure
-import org.onap.dcae.collectors.veshv.utils.arrow.IOUtils.binding
-import org.onap.dcae.collectors.veshv.utils.arrow.unsafeRunEitherSync
+import org.onap.dcae.collectors.veshv.utils.process.ExitCode
+import org.onap.dcae.collectors.veshv.utils.process.ExitSuccess
 import org.onap.dcae.collectors.veshv.utils.logging.Logger
 import org.onap.dcae.collectors.veshv.ves.message.generator.factory.MessageGeneratorFactory
 
@@ -46,36 +45,29 @@ const val PROGRAM_NAME = "java $PACKAGE_NAME.MainKt"
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since June 2018
  */
-fun main(args: Array<String>) = ArgXnfSimulatorConfiguration().parse(args)
-        .mapLeft(handleWrongArgumentErrorCurried(PROGRAM_NAME))
-        .map(::startServers)
-        .unsafeRunEitherSync(
-                { ex ->
-                    logger.withError { log("Failed to start a server", ex) }
-                    ExitFailure(1)
-                },
-                {
-                    logger.info { "Stopping xNF Simulator API server" }
-                }
-        )
+fun main(args: Array<String>): Unit =
+        ArgXnfSimulatorConfiguration().parse(args)
+                .fold(handleWrongArgumentErrorCurried(PROGRAM_NAME), ::startServers)
+                .let(ExitCode::doExit)
 
-private fun startServers(config: SimulatorConfiguration): IO<Unit> =
-        binding {
-            logger.info { "Using configuration: $config" }
+private fun startServers(config: SimulatorConfiguration): ExitCode {
+    logger.info { "Using configuration: $config" }
 
-            XnfHealthCheckServer().startServer(config).bind()
+    XnfHealthCheckServer().startServer(config).block()
 
-            val clientConfig = ClientConfiguration(HashSet.of(config.hvVesAddress), config.securityProvider)
-            val xnfSimulator = XnfSimulator(
-                    ClientFactory(clientConfig),
-                    MessageGeneratorFactory(config.maxPayloadSizeBytes)
-            )
-            val xnfApiServerHandler = XnfApiServer(xnfSimulator, OngoingSimulations())
-                    .start(config.listenAddress).bind()
+    val clientConfig = ClientConfiguration(HashSet.of(config.hvVesAddress), config.securityProvider)
+    val xnfSimulator = XnfSimulator(
+            ClientFactory(clientConfig),
+            MessageGeneratorFactory(config.maxPayloadSizeBytes)
+    )
+    val xnfApiServerHandler = XnfApiServer(xnfSimulator, OngoingSimulations())
+            .start(config.listenAddress)
+            .block()
 
-            logger.info { "Started xNF Simulator API server" }
-            HealthState.INSTANCE.changeState(HealthDescription.IDLE)
+    logger.info { "Started xNF Simulator API server" }
+    HealthState.INSTANCE.changeState(HealthDescription.IDLE)
 
-            xnfApiServerHandler.await().bind()
-        }
+    xnfApiServerHandler.await().block()
+    return ExitSuccess
+}