diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java index 40109b9d762fc26d9a80091e3b01f43ff632eab0..a6a4e60a0c2f02bd090d3a5644fc18545eb1b0e9 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java @@ -292,6 +292,7 @@ public class ESLEventListener implements IEslEventListener { String json = gson.toJson(event.getEventHeaders()); //log.info(json); + log.info("Received Heartbeat from Freeswitch."); Map<String, String> headers = event.getEventHeaders(); Map<String, String> hb = new HashMap<String, String>(); diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala index 7df02361d535ea77b792f8349f2b6645d01a317b..297d07370263991da18b4f204878767badaa01d4 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala @@ -1,19 +1,20 @@ package org.bigbluebutton -import scala.concurrent.ExecutionContext import akka.http.scaladsl.model._ -import akka.actor.ActorSystem import akka.http.scaladsl.server.Directives._ -import akka.pattern.AskTimeoutException -import akka.stream.Materializer -import com.google.gson.Gson -import org.bigbluebutton.service.{ GetHealthResponseMessage, HealthzService } +import org.bigbluebutton.service.{ HealthzService } +import spray.json.DefaultJsonProtocol +import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport -import scala.collection.JavaConverters._ -import scala.collection.mutable -import scala.util.{ Failure, Success } +case class HealthResponse(isHealthy: Boolean) +case class StatusResponse(status: Array[String], heartbeat: Map[String, String]) -class ApiService(healthz: HealthzService)(implicit executor: ExecutionContext, as: ActorSystem, mat: Materializer) { +trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol { + implicit val healthResponseFormat = jsonFormat1(HealthResponse) + implicit val statusResponseFormat = jsonFormat2(StatusResponse) +} + +class ApiService(healthz: HealthzService) extends JsonSupport { def routes = path("healthz") { @@ -22,11 +23,9 @@ class ApiService(healthz: HealthzService)(implicit executor: ExecutionContext, a onSuccess(future) { case res => if (res.isHealthy) { - val gson = new Gson - complete(StatusCodes.OK, HttpEntity(ContentTypes.`application/json`, gson.toJson(res))) + complete(StatusCodes.Created, HealthResponse(res.isHealthy)) } else { - val gson = new Gson - complete(StatusCodes.ServiceUnavailable, HttpEntity(ContentTypes.`application/json`, gson.toJson(res))) + complete(StatusCodes.ServiceUnavailable, HealthResponse(res.isHealthy)) } } } @@ -36,9 +35,8 @@ class ApiService(healthz: HealthzService)(implicit executor: ExecutionContext, a val future = healthz.getFreeswitchStatus() onSuccess(future) { case res => - val gson = new Gson() - val response = Map("status" -> res.status, "heartbeat" -> res.heartbeat.asJava) - complete(StatusCodes.OK, HttpEntity(ContentTypes.`application/json`, gson.toJson(response.asJava))) + val response = StatusResponse(res.status, res.heartbeat) + complete(StatusCodes.OK, response) } } } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala index 7dd5b292ef857f397c99d07dceea665530a08463..9e3c4769694246cc3cddde0b84c1a3607891c2a5 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala @@ -68,11 +68,4 @@ object Boot extends App with SystemConfiguration with WebApi { val bindingFuture = Http().bindAndHandle(apiService.routes, httpHost, httpPort) - println(s"Server online at $httpHost:$httpPort/\nPress RETURN to stop...") - /* - bindingFuture - .flatMap(_.unbind()) // trigger unbinding from the port - .onComplete(_ => system.terminate()) // and shutdown when done - - */ } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala index e6b41e9eeaff0f94c00149090c35f2bf93066565..448e57c13266eb99025c5659eab1a34ee5dd1a00 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala @@ -2,11 +2,10 @@ package org.bigbluebutton.service import java.text.SimpleDateFormat -import akka.actor.{ Actor, ActorContext, ActorLogging, Props } +import akka.actor.{ Actor, ActorLogging, Props } import akka.actor.ActorSystem import akka.pattern.{ AskTimeoutException, ask } import akka.util.Timeout -import com.google.gson.Gson import scala.concurrent.duration._ import scala.concurrent.Future @@ -72,7 +71,6 @@ class HealthzActor extends Actor def receive = { case msg: FreeswitchStatusMessage => - val gson = new Gson() val now = System.currentTimeMillis() status = FreeswitchStatus(now, sdf.format(now), msg.status) case msg: FreeswitchHeartbeatMessage =>