aboutsummaryrefslogtreecommitdiff
path: root/mavigator-server/src/main/scala/mavigator/Main.scala
diff options
context:
space:
mode:
Diffstat (limited to 'mavigator-server/src/main/scala/mavigator/Main.scala')
-rw-r--r--mavigator-server/src/main/scala/mavigator/Main.scala40
1 files changed, 22 insertions, 18 deletions
diff --git a/mavigator-server/src/main/scala/mavigator/Main.scala b/mavigator-server/src/main/scala/mavigator/Main.scala
index 6ea894e..3ad1460 100644
--- a/mavigator-server/src/main/scala/mavigator/Main.scala
+++ b/mavigator-server/src/main/scala/mavigator/Main.scala
@@ -1,11 +1,12 @@
package mavigator
+import scala.concurrent.{Await, TimeoutException}
+import scala.concurrent.duration._
+
import akka.actor._
import akka.http.scaladsl._
-import akka.http.scaladsl.server._
import akka.stream._
-import scala.concurrent.Await
-import scala.concurrent.duration.Duration
+import mavigator.uav.Uav
object Main {
@@ -15,30 +16,33 @@ object Main {
def main(args: Array[String]): Unit = {
import system.dispatcher
- system.log.info("System started.")
+ val route = Router.route
- val router = Router.route
+ system.log.info(s"Initializing UAV connection backend...")
+ Uav().init()
- system.log.info(s"Starting server")
- val binding = Http(system).bindAndHandle(router, "0.0.0.0", 8080)
+ system.log.info(s"Starting server...")
+ val binding = Http(system).bindAndHandle(route, "::", 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)
+ sys.addShutdownHook { stop() }
+ }
+ def stop() = {
+ system.log.info("Stopping server...")
+ system.terminate()
+
+ try {
+ Await.result(system.whenTerminated, 2.seconds)
+ System.err.println("Bye.")
+ } catch {
+ case ex: TimeoutException =>
+ System.err.println("Shutdown is taking too long, exiting now")
+ }
}
}