diff options
Diffstat (limited to 'mavigator-server/src/main/scala/mavigator/Main.scala')
-rw-r--r-- | mavigator-server/src/main/scala/mavigator/Main.scala | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/mavigator-server/src/main/scala/mavigator/Main.scala b/mavigator-server/src/main/scala/mavigator/Main.scala new file mode 100644 index 0000000..6ea894e --- /dev/null +++ b/mavigator-server/src/main/scala/mavigator/Main.scala @@ -0,0 +1,44 @@ +package mavigator + +import akka.actor._ +import akka.http.scaladsl._ +import akka.http.scaladsl.server._ +import akka.stream._ +import scala.concurrent.Await +import scala.concurrent.duration.Duration + +object Main { + + implicit lazy val system = ActorSystem("mavigator") + implicit lazy val materializer = ActorMaterializer() + + def main(args: Array[String]): Unit = { + import system.dispatcher + + system.log.info("System started.") + + val router = Router.route + + system.log.info(s"Starting server") + val binding = Http(system).bindAndHandle(router, "0.0.0.0", 8080) + + for (b <- binding) { + val addr = b.localAddress.getHostString() + val port = b.localAddress.getPort() + system.log.info(s"Server is listening on $addr:$port") + } + + scala.io.StdIn.readLine() + + binding.flatMap{b => + system.log.info("Shutting down server...") + b.unbind() + }.onComplete{ _ => + system.log.info("Server shut down") + system.terminate() + } + + Await.result(system.whenTerminated, Duration.Inf) + + } +} |