diff --git a/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/PrivateVerticle.java b/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/PrivateVerticle.java index 7793200328106ca405801b77abefb58ef997bf1d..17a20b1ee60caae7b0bc507bae58501d01d4e8f3 100755 --- a/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/PrivateVerticle.java +++ b/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/PrivateVerticle.java @@ -122,9 +122,12 @@ public class PrivateVerticle extends AbstractVerticle { System.out.println("Socket SEND for: " + be.socket().webSession().id() + " \n " + be.getRawMessage()); } else if (be.type() == BridgeEventType.REGISTER) { System.out.println("Socket REGISTER for: " + be.socket().webSession().id() + " \n " + be.getRawMessage()); - //eb.consumer("to-vertx").handler(message -> { - // System.out.println("**** response to " + be.socket().webSession().id() + " msg = " + message.body()); - //}); + eb.consumer("to-vertx").handler(message -> { + System.out.println("**** response to " + be.socket().webSession().id() + " msg = " + message.body()); + if (message.body().toString().equals("CLOSE_SOCKET")) { + be.socket().close(); + } + }); //gw.send(be.rawMessage().toString()); } else { System.out.println("Message from: " + be.socket().webSession().id() + " \n " + be.getRawMessage()); diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala index b21cbaa918d1669c35e6d3c2ae3ee968d1413acf..9d0f4a22aeb6bce8adf13dbd682d51ec0edd4c84 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala @@ -18,7 +18,7 @@ object Boot extends App with SystemConfiguration { val vertxGW = new AkkaToVertxGateway(vertx) - val echoActor = system.actorOf(EchoService.props(vertxGW), "echo-actor") + val echoActor = system.actorOf(EchoService.props(vertxGW, vertx), "echo-actor") val authActor = system.actorOf(AuthService.props(vertxGW), "auth-actor") val akkaGW = new VertxToAkkaGateway(system, vertx, authActor, echoActor) @@ -27,4 +27,4 @@ object Boot extends App with SystemConfiguration { val hello = new HelloWorld(vertx, akkaGW); hello.startup() -} \ No newline at end of file +} diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala index 9cbab3797206fc23ec3b442927dc29e389e219de..46ffbf1852b59fb644fdb80e675e2c6d0e6f2ddb 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala @@ -1,13 +1,20 @@ package org.bigbluebutton -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{Actor, ActorContext, ActorLogging, Props} object Connection { - def props(connId: String): Props = - Props(classOf[Connection]) + def apply()(implicit context: ActorContext): Connection = new Connection() } -class Connection(connId: String) extends Actor with ActorLogging { +class Connection() (implicit val context: ActorContext) { + +} + +object ConnectionActor { + def props(connId: String): Props = Props(classOf[ConnectionActor]) +} + +class ConnectionActor(connId: String) extends Actor with ActorLogging { def receive = { case _ => log.debug("***** Connection cannot handle msg ") diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala index 08115379a4664d670b1b2958d9f9decdced0ed9d..87c95945f831d8ced5ab2e14632ae5bd7fc13590 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala @@ -5,15 +5,15 @@ import io.vertx.core.Vertx class ConnectionManager(system: ActorSystem, vertx: Vertx) { - def connectionCreated(id: String):Unit = { + def connectionCreated(id: String): Unit = { } - def connectionClosed(id: String):Unit = { + def connectionClosed(id: String): Unit = { } - def onMessageReceived(id: String, msg: String):Unit = { + def onMessageReceived(id: String, msg: String): Unit = { } } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/EchoService.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/EchoService.scala index a48f76ed4b6880530b167fce91e830d3e42ef7df..7dd0ad33e7e6381b1b5a429a314c43efa2f91c3c 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/EchoService.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/EchoService.scala @@ -7,17 +7,24 @@ import org.bigbluebutton.vertx.IAkkaToVertxGateway import org.bigbluebutton.vertx.AkkaToVertxGateway object EchoService { - def props(gw: AkkaToVertxGateway): Props = - Props(classOf[EchoService], gw) + def props(gw: AkkaToVertxGateway, vertx: Vertx): Props = + Props(classOf[EchoService], gw, vertx) } -class EchoService(gw: AkkaToVertxGateway) extends Actor with ActorLogging { +class EchoService(gw: AkkaToVertxGateway, vertx: Vertx) extends Actor with ActorLogging { + + private var i: Int = 0; def receive = { case msg: String => { //println("****** Echoing " + msg) gw.send("FROM ECHO: " + msg) + i += 1 + if (i > 50) { + //gw.send("CLOSE_SOCKET") + vertx.eventBus.publish("to-vertx", "CLOSE_SOCKET") + } } case _ => log.error("Cannot handle message ") } -} \ No newline at end of file +}