diff options
Diffstat (limited to 'server/src/Main.scala')
-rw-r--r-- | server/src/Main.scala | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/server/src/Main.scala b/server/src/Main.scala index 51e4f28..91649a2 100644 --- a/server/src/Main.scala +++ b/server/src/Main.scala @@ -11,18 +11,39 @@ import scala.concurrent.duration._ object Main extends App { + def log(message: String) = System.err.println(message) + + log("Initializing contexts...") implicit val system = ActorSystem("triad") implicit val materializer = ActorMaterializer() - - val repository = { - Files.deleteIfExists(Paths.get("database.sqlite")) - Repository.sqlite("database.sqlite") + system.registerOnTermination { + log("Bye!") } - val liveMessages = new LiveMessages - val routes = new Routes(repository, liveMessages) - Await.result(repository.database.run(repository.initAction), 10.seconds) + try { + log("Initializing database...") + val repository = { + Files.deleteIfExists(Paths.get("database.sqlite")) + Repository.sqlite("database.sqlite") + } + + log("Preparing live message relay...") + val liveMessages = new LiveMessages + + log("Setting up routes...") + val routes = new Routes(repository, liveMessages) - Await.result(Http().bindAndHandle(routes.all, "0.0.0.0", 9090), 10.seconds) + log("Populating database tables...") + Await.result(repository.database.run(repository.initAction), 10.seconds) + + log("Binding to network...") + Await.result(Http().bindAndHandle(routes.all, "0.0.0.0", 9090), 10.seconds) + + log("Ready") + } catch { + case ex: Exception => + log("Error in initialization. Shutting down...") + system.terminate() + } } |