aboutsummaryrefslogtreecommitdiff
path: root/server/src/Main.scala
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Main.scala')
-rw-r--r--server/src/Main.scala37
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()
+ }
}