diff --git a/labs/vertx-akka/.gitignore b/labs/vertx-akka/.gitignore index 2e78b79d531f0c06fd8b54a7a2d39b6511ce1e6d..2e3ab18576911fef465b43562785f1203a876a5b 100644 --- a/labs/vertx-akka/.gitignore +++ b/labs/vertx-akka/.gitignore @@ -49,3 +49,5 @@ lib_managed/ bin/ .vertx/ target/ +src/main/resources/ + diff --git a/labs/vertx-akka/.scalariform.conf b/labs/vertx-akka/.scalariform.conf new file mode 100755 index 0000000000000000000000000000000000000000..372b90d4b0dba48f79becc8724795b60e3456724 --- /dev/null +++ b/labs/vertx-akka/.scalariform.conf @@ -0,0 +1,31 @@ +#alignArguments=false +alignParameters=true +alignSingleLineCaseStatements=true +#alignSingleLineCaseStatements.maxArrowIndent=40 +#allowParamGroupsOnNewlines=false +#compactControlReadability=false +#compactStringConcatenation=false +danglingCloseParenthesis=Force +#doubleIndentClassDeclaration=false +doubleIndentConstructorArguments=true +doubleIndentMethodDeclaration=true +firstArgumentOnNewline=Force +firstParameterOnNewline=Force +#formatXml=true +#indentLocalDefs=false +#indentPackageBlocks=true +#indentSpaces=2 +#indentWithTabs=false +#multilineScaladocCommentsStartOnFirstLine=false +#newlineAtEndOfFile=false +#placeScaladocAsterisksBeneathSecondAsterisk=false +#preserveSpaceBeforeArguments=false +#rewriteArrowSymbols=false +singleCasePatternOnNewline=false +#spaceBeforeColon=false +#spaceBeforeContextColon=false +#spaceInsideBrackets=false +#spaceInsideParentheses=false +#spacesAroundMultiImports=true +#spacesWithinPatternBinders=true + diff --git a/labs/vertx-akka/build.sbt b/labs/vertx-akka/build.sbt index 7950697d09da3a6dd31342dce87b27cb5a991b58..7870634b133915ee6989aef1b071b4bb7c5b8aa0 100755 --- a/labs/vertx-akka/build.sbt +++ b/labs/vertx-akka/build.sbt @@ -1,73 +1,47 @@ -enablePlugins(JavaServerAppPackaging) - -name := "vertx-akka" - -organization := "org.bigbluebutton" +import org.bigbluebutton.build._ -version := "0.0.2" - -scalaVersion := "2.12.2" - -scalacOptions ++= Seq( - "-unchecked", - "-deprecation", - "-Xlint", - "-Ywarn-dead-code", - "-language:_", - "-target:jvm-1.8", - "-encoding", "UTF-8" -) +import NativePackagerHelper._ +import com.typesafe.sbt.SbtNativePackager.autoImport._ -resolvers ++= Seq( - "spray repo" at "http://repo.spray.io/", - "rediscala" at "http://dl.bintray.com/etaty/maven", - "blindside-repos" at "http://blindside.googlecode.com/svn/repository/" +enablePlugins(JavaServerAppPackaging) +enablePlugins(UniversalPlugin) +enablePlugins(DebianPlugin) + +val compileSettings = Seq( + organization := "org.bigbluebutton", + + scalacOptions ++= List( + "-unchecked", + "-deprecation", + "-Xlint", + "-Ywarn-dead-code", + "-language:_", + "-target:jvm-1.8", + "-encoding", "UTF-8" + ), + javacOptions ++= List( + "-Xlint:unchecked", + "-Xlint:deprecation" + ) ) -publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/dev/repo/maven-repo/releases" )) ) +publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath + "/dev/repo/maven-repo/releases"))) // We want to have our jar files in lib_managed dir. // This way we'll have the right path when we import // into eclipse. retrieveManaged := true -unmanagedResourceDirectories in Compile += { baseDirectory.value / "src/main/webapp" } - testOptions in Test += Tests.Argument(TestFrameworks.Specs2, "html", "console", "junitxml") testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/scalatest-reports") -libraryDependencies ++= { - val scalaV = "2.12.2" - val akkaVersion = "2.5.1" - val scalaTestV = "2.2.6" - val vertxV = "3.5.1" - - Seq( - "com.typesafe.akka" %% "akka-actor" % akkaVersion, - "com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test", - "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, - "ch.qos.logback" % "logback-classic" % "1.0.13" % "runtime", - "org.pegdown" % "pegdown" % "1.4.0", - "junit" % "junit" % "4.11", - "commons-codec" % "commons-codec" % "1.8", - "joda-time" % "joda-time" % "2.3", - "com.google.code.gson" % "gson" % "2.8.0", - "io.vertx" % "vertx-web" % vertxV, - "io.vertx" % "vertx-auth-common" % vertxV, - "io.vertx" % "vertx-auth-shiro" % vertxV, - "io.vertx" %% "vertx-web-scala" % vertxV, - "io.vertx" %% "vertx-lang-scala" % vertxV, - "com.github.etaty" % "rediscala_2.12" % "1.8.0", - "com.softwaremill.quicklens" %% "quicklens" % "1.4.8", - "org.bigbluebutton" % "bbb-common-message_2.12" % "0.0.19-SNAPSHOT", - "redis.clients" % "jedis" % "2.9.0" - )} - -seq(Revolver.settings: _*) - -scalariformSettings +Seq(Revolver.settings: _*) +lazy val bbbVertxAkka = (project in file(".")).settings(name := "bbb-vertx-akka", libraryDependencies ++= Dependencies.runtime).settings(compileSettings) +// See https://github.com/scala-ide/scalariform +// Config file is in ./.scalariform.conf +scalariformAutoformat := true //----------- // Packaging @@ -80,30 +54,22 @@ mainClass := Some("org.bigbluebutton.Boot") maintainer in Linux := "Richard Alam <ritzalam@gmail.com>" -packageSummary in Linux := "vertx akka example" +packageSummary in Linux := "BigBlueButton Vertx Akka" -packageDescription := """Vertx Akka Example.""" +packageDescription := """BigBlueButton Core Vertx Akka.""" val user = "bigbluebutton" val group = "bigbluebutton" // user which will execute the application -daemonUser in Linux := user +daemonUser in Linux := user // group which will execute the application -daemonGroup in Linux := group - -mappings in Universal <+= (packageBin in Compile, sourceDirectory ) map { (_, src) => - // Move the application.conf so the user can override settings here - val appConf = src / "main" / "resources" / "application.conf" - appConf -> "conf/application.conf" -} +daemonGroup in Linux := group -mappings in Universal <+= (packageBin in Compile, sourceDirectory ) map { (_, src) => - // Move logback.xml so the user can override settings here - val logConf = src / "main" / "resources" / "logback.xml" - logConf -> "conf/logback.xml" -} +javaOptions in Universal ++= Seq("-J-Xms130m", "-J-Xmx256m", "-Dconfig.file=conf/application.conf", "-Dlogback.configurationFile=conf/logback.xml") debianPackageDependencies in Debian ++= Seq("java8-runtime-headless", "bash") + + diff --git a/labs/vertx-akka/project/Dependencies.scala b/labs/vertx-akka/project/Dependencies.scala new file mode 100755 index 0000000000000000000000000000000000000000..933bd9eb37cc50ebcf9fa45d6d7e3dc23c895aab --- /dev/null +++ b/labs/vertx-akka/project/Dependencies.scala @@ -0,0 +1,99 @@ +package org.bigbluebutton.build + +import sbt._ +import Keys._ + +object Dependencies { + + object Versions { + // Scala + val scala = "2.12.8" + val junit = "4.12" + val junitInterface = "0.11" + val scalactic = "3.0.3" + + // Libraries + val akkaVersion = "2.5.19" + val gson = "2.8.5" + val jackson = "2.9.7" + val logback = "1.2.3" + val quicklens = "1.4.11" + val spray = "1.3.4" + val vertxV = "3.5.1" + + // Apache Commons + val lang = "3.8.1" + val codec = "1.11" + + // BigBlueButton + val bbbCommons = "0.0.20-SNAPSHOT" + + // Test + val scalaTest = "3.0.5" + val mockito = "2.23.0" + val akkaTestKit = "2.5.18" + } + + object Compile { + val scalaLibrary = "org.scala-lang" % "scala-library" % Versions.scala + val scalaCompiler = "org.scala-lang" % "scala-compiler" % Versions.scala + + val akkaActor = "com.typesafe.akka" % "akka-actor_2.12" % Versions.akkaVersion + val akkaSl4fj = "com.typesafe.akka" % "akka-slf4j_2.12" % Versions.akkaVersion + + val vertxWeb = "io.vertx" % "vertx-web" % Versions.vertxV + val vertxAuthCommon = "io.vertx" % "vertx-auth-common" % Versions.vertxV + val vertxAuthShiro = "io.vertx" % "vertx-auth-shiro" % Versions.vertxV + val vertxWebScala = "io.vertx" %% "vertx-web-scala" % Versions.vertxV + val vertxLangScala = "io.vertx" %% "vertx-lang-scala" % Versions.vertxV + + val googleGson = "com.google.code.gson" % "gson" % Versions.gson + val jacksonModule = "com.fasterxml.jackson.module" %% "jackson-module-scala" % Versions.jackson + val quicklens = "com.softwaremill.quicklens" %% "quicklens" % Versions.quicklens + val logback = "ch.qos.logback" % "logback-classic" % Versions.logback + val commonsCodec = "commons-codec" % "commons-codec" % Versions.codec + val sprayJson = "io.spray" % "spray-json_2.12" % Versions.spray + + val redisEtaty = "com.github.etaty" % "rediscala_2.12" % "1.8.0" + + val apacheLang = "org.apache.commons" % "commons-lang3" % Versions.lang + + val bbbCommons = "org.bigbluebutton" % "bbb-common-message_2.12" % Versions.bbbCommons excludeAll ( + ExclusionRule(organization = "org.red5")) + } + + object Test { + val scalaTest = "org.scalatest" %% "scalatest" % Versions.scalaTest % "test" + val junit = "junit" % "junit" % Versions.junit % "test" + val mockitoCore = "org.mockito" % "mockito-core" % Versions.mockito % "test" + val scalactic = "org.scalactic" % "scalactic_2.12" % Versions.scalactic % "test" + val akkaTestKit = "com.typesafe.akka" %% "akka-testkit" % Versions.akkaTestKit % "test" + } + + val testing = Seq( + Test.scalaTest, + Test.junit, + Test.mockitoCore, + Test.scalactic, + Test.akkaTestKit) + + val runtime = Seq( + Compile.scalaLibrary, + Compile.scalaCompiler, + Compile.akkaActor, + Compile.akkaSl4fj, + Compile.vertxWeb, + Compile.vertxAuthCommon, + Compile.vertxAuthShiro, + Compile.vertxWebScala, + Compile.vertxWebScala, + Compile.googleGson, + Compile.jacksonModule, + Compile.quicklens, + Compile.logback, + Compile.commonsCodec, + Compile.sprayJson, + Compile.apacheLang, + Compile.redisEtaty, + Compile.bbbCommons) ++ testing +} diff --git a/labs/vertx-akka/project/build.properties b/labs/vertx-akka/project/build.properties index a6e117b61042ee81c62ba3a0fc5210d9502944df..72f902892a13412b3dd54bd4b3f2a1de18ec17d3 100755 --- a/labs/vertx-akka/project/build.properties +++ b/labs/vertx-akka/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.8 +sbt.version=1.2.7 diff --git a/labs/vertx-akka/project/plugins.sbt b/labs/vertx-akka/project/plugins.sbt index 6fabc00590dcb24d70e68aef68c274fa4daaf908..fe82d14f3ae3d649883f9b0bbbaf8ac4fe743cc5 100755 --- a/labs/vertx-akka/project/plugins.sbt +++ b/labs/vertx-akka/project/plugins.sbt @@ -1,11 +1,11 @@ -addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.2") +addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") -addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.3.0") +addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") -addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0") +addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.8.2") -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0") +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.15") -addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "0.2.7") +addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "0.2.9") -addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") \ No newline at end of file diff --git a/labs/vertx-akka/run-dev.sh b/labs/vertx-akka/run-dev.sh new file mode 100755 index 0000000000000000000000000000000000000000..d08b052304fdb361a2df6fbfa8942bf72e65bf66 --- /dev/null +++ b/labs/vertx-akka/run-dev.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +rm -rf src/main/resources +cp -R src/universal/conf src/main/resources +sbt run + diff --git a/labs/vertx-akka/run.sh b/labs/vertx-akka/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..7490c52746dc873989d2bb8f48aacdb769d67215 --- /dev/null +++ b/labs/vertx-akka/run.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +sbt clean stage +sudo service bbb-vertx-akka stop +cd target/universal/stage +./bin/bbb-vertx-akka diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/AuthService.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/AuthService.scala index aa7d7b11ca13ac83e8f38080bbe246acbefa9dc7..b56cfb0944b260bc7ec3e460c8b5390a91a27f88 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/AuthService.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/AuthService.scala @@ -12,7 +12,7 @@ object AuthService { } class AuthService(gw: AkkaToVertxGateway) - extends Actor with ActorLogging { + extends Actor with ActorLogging { def receive = { case msg: String => { diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/VertxToAkkaGateway.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/VertxToAkkaGateway.scala index 01976ea0338bfe0218421996dc3826a36eb94318..78311b8f7d017042514c4a7b616ffb7bda0d1b90 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/VertxToAkkaGateway.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/VertxToAkkaGateway.scala @@ -14,8 +14,8 @@ import io.vertx.core.eventbus.Message import akka.actor.ActorSystem class VertxToAkkaGateway(system: ActorSystem, vertx: Vertx, - authService: ActorRef, - echoService: ActorRef) extends IAkkaToVertxGateway { + authService: ActorRef, + echoService: ActorRef) extends IAkkaToVertxGateway { implicit def executionContext = system.dispatcher val consumer: MessageConsumer[String] = vertx.eventBus().consumer("foofoofoo") diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala index e29dbb91a0e4e769d37e3f7ba72d0e001eaf73b9..da87501cf3181cd025a7150b2e976b14f909d0c9 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala @@ -17,7 +17,7 @@ object ClientActor { } class ClientActor(clientId: String, connEventBus: InternalMessageBus) - extends Actor with ActorLogging with SystemConfiguration { + extends Actor with ActorLogging with SystemConfiguration { private val conns = new Connections private var authorized = false diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala index 50f50dc5709834c0c9129ca6a91a0232039ff28c..390b23b97983469fa3e48aff428d15f4c4831fdf 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala @@ -11,7 +11,7 @@ object MsgToAkkaAppsToJsonActor { } class MsgToAkkaAppsToJsonActor(connEventBus: InternalMessageBus) - extends Actor with ActorLogging with SystemConfiguration { + extends Actor with ActorLogging with SystemConfiguration { def receive = { case msg: MsgToAkkaApps => handle(msg) diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToClientJsonActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToClientJsonActor.scala index 4f8220984002714a7cedebc3599b6f75821325cf..122c467a08aad36511e620f1e108a51be7a1f09a 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToClientJsonActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToClientJsonActor.scala @@ -13,9 +13,9 @@ object MsgToClientJsonActor { class MsgToClientJsonActor(msgToClientGW: MsgToClientGW) extends Actor with ActorLogging { def receive = { - case msg: BroadcastMsgToMeeting => handleBroadcastMsg(msg) - case msg: DirectMsgToClient => handleDirectMsg(msg) - case msg: DisconnectClientMsg => handleDisconnectClientMsg(msg) + case msg: BroadcastMsgToMeeting => handleBroadcastMsg(msg) + case msg: DirectMsgToClient => handleDirectMsg(msg) + case msg: DisconnectClientMsg => handleDisconnectClientMsg(msg) case msg: DisconnectAllMeetingClientsMsg => handleDisconnectAllMeetingClientsMsg(msg) } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ReceivedJsonMsgHdlrActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ReceivedJsonMsgHdlrActor.scala index 309b90fc230bde2556a126b4c368fb01cdee58ba..63e8cf3054a1ce7ec025e76f8b6cadbce1c8db53 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ReceivedJsonMsgHdlrActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ReceivedJsonMsgHdlrActor.scala @@ -13,18 +13,18 @@ object ReceivedJsonMsgHdlrActor { } class ReceivedJsonMsgHdlrActor(val connEventBus: InternalMessageBus) - extends Actor with ActorLogging with SystemConfiguration { + extends Actor with ActorLogging with SystemConfiguration { def receive = { case msg: JsonMsgFromAkkaApps => handleReceivedJsonMessage(msg) - case _ => // do nothing + case _ => // do nothing } def handleReceivedJsonMessage(msg: JsonMsgFromAkkaApps): Unit = { //log.debug("****** Received JSON msg " + msg.data) JsonUtil.fromJson[BbbCommonEnvJsNodeMsg](msg.data) match { - case Success(m) => connEventBus.publish(MsgFromConnBusMsg(fromAkkaAppsChannel, MsgFromAkkaApps(m))) + case Success(m) => connEventBus.publish(MsgFromConnBusMsg(fromAkkaAppsChannel, MsgFromAkkaApps(m))) case Failure(ex) => log.error("Failed to deserialize message " + ex) } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala index 548357ffe390daaa868d8bac9f0209f48223364b..acd749daff30a3825ef1c954db376edf3b56f07f 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala @@ -25,11 +25,13 @@ object AppsRedisSubscriberActor extends SystemConfiguration { } class AppsRedisSubscriberActor(connEventBus: InternalMessageBus, redisHost: String, - redisPort: Int, - channels: Seq[String] = Nil, patterns: Seq[String] = Nil) - extends RedisSubscriberActor(new InetSocketAddress(redisHost, redisPort), - channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) - with SystemConfiguration with ActorLogging { + redisPort: Int, + channels: Seq[String] = Nil, patterns: Seq[String] = Nil) + extends RedisSubscriberActor( + new InetSocketAddress(redisHost, redisPort), + channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") } + ) + with SystemConfiguration with ActorLogging { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) { case e: Exception => { diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingActor.scala index 0bbd59064beb0fa34cd626f91e1bc48c73e5b76d..29636e0973cddfee57da30c4cf05bed93fe2d330 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingActor.scala @@ -11,15 +11,15 @@ object MeetingActor { } class MeetingActor(val meetingId: String, connEventBus: InternalMessageBus) - extends Actor with ActorLogging - with SystemConfiguration { + extends Actor with ActorLogging + with SystemConfiguration { private val userMgr = new UsersManager def receive = { - case msg: ClientConnectedMsg => handleConnectMsg(msg) + case msg: ClientConnectedMsg => handleConnectMsg(msg) case msg: ClientDisconnectedMsg => handleDisconnectMsg(msg) - case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg) + case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg) case msg: BbbCommonEnvJsNodeMsg => handleBbbServerMsg(msg) // TODO: Should keep track of user lifecycle so we can remove when user leaves the meeting. } @@ -69,9 +69,9 @@ class MeetingActor(val meetingId: String, connEventBus: InternalMessageBus) def handleServerMsg(msgType: String, msg: BbbCommonEnvJsNodeMsg): Unit = { //log.debug("**** MeetingActor handleServerMsg " + msg.envelope.name) msgType match { - case MessageTypes.DIRECT => handleDirectMessage(msg) + case MessageTypes.DIRECT => handleDirectMessage(msg) case MessageTypes.BROADCAST_TO_MEETING => handleBroadcastMessage(msg) - case MessageTypes.SYSTEM => handleSystemMessage(msg) + case MessageTypes.SYSTEM => handleSystemMessage(msg) } } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala index e789b73f4cf149bcfb7650d7fa4b8f53859523db..de28d1cb763a113150eda45747ce046db00d59b9 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala @@ -10,15 +10,15 @@ object MeetingManagerActor { } class MeetingManagerActor(connEventBus: InternalMessageBus) - extends Actor with ActorLogging { + extends Actor with ActorLogging { private val meetingMgr = new MeetingManager def receive = { - case msg: ClientConnectedMsg => handleConnectMsg(msg) + case msg: ClientConnectedMsg => handleConnectMsg(msg) case msg: ClientDisconnectedMsg => handleDisconnectMsg(msg) - case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg) - case msg: MsgFromAkkaApps => handleBbbServerMsg(msg) + case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg) + case msg: MsgFromAkkaApps => handleBbbServerMsg(msg) // TODO we should monitor meeting lifecycle so we can remove when meeting ends. } @@ -67,9 +67,9 @@ class MeetingManagerActor(connEventBus: InternalMessageBus) def handleServerMsg(msgType: String, msg: BbbCommonEnvJsNodeMsg): Unit = { //log.debug("**** MeetingManagerActor handleServerMsg " + msg.envelope.name) msgType match { - case MessageTypes.DIRECT => handleDirectMessage(msg) + case MessageTypes.DIRECT => handleDirectMessage(msg) case MessageTypes.BROADCAST_TO_MEETING => handleBroadcastMessage(msg) - case MessageTypes.SYSTEM => handleSystemMessage(msg) + case MessageTypes.SYSTEM => handleSystemMessage(msg) } } @@ -78,7 +78,7 @@ class MeetingManagerActor(connEventBus: InternalMessageBus) case Some(meetingId2) => //log.debug("**** MeetingManagerActor forwardToMeeting. Found " + meetingId2) MeetingManager.findWithMeetingId(meetingMgr, meetingId2) match { case Some(meetingId2) => //log.debug("**** MeetingManagerActor forwardToMeeting. Found " + meetingId2.meetingId) - case None => //log.debug("**** MeetingManagerActor forwardToMeeting. Could not find meetingId") + case None => //log.debug("**** MeetingManagerActor forwardToMeeting. Could not find meetingId") } case None => log.debug("**** MeetingManagerActor forwardToMeeting. Could not find meetingId") } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/User.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/User.scala index 9f00804b8f9367841c56f275c516186b99166ee9..403e0a2b55854950969fbdfbf72647badafeaf5d 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/User.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/User.scala @@ -4,15 +4,19 @@ import akka.actor.ActorContext import org.bigbluebutton.client.bus.{ InternalMessageBus } object User { - def apply(userId: String, - connEventBus: InternalMessageBus, - meetingId: String)(implicit context: ActorContext): User = + def apply( + userId: String, + connEventBus: InternalMessageBus, + meetingId: String + )(implicit context: ActorContext): User = new User(userId, connEventBus, meetingId)(context) } -class User(val userId: String, +class User( + val userId: String, connEventBus: InternalMessageBus, - meetingId: String)(implicit val context: ActorContext) { + meetingId: String +)(implicit val context: ActorContext) { val actorRef = context.actorOf(UserActor.props(userId, connEventBus, meetingId), meetingId + "-" + userId) } diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala index 2996254973aca1b0f0d80cb429ca86873a66d017..d90549cebc24970bcebb2db220c6194c592cc379 100755 --- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala +++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala @@ -10,27 +10,31 @@ import com.fasterxml.jackson.databind.JsonNode import scala.util.{ Failure, Success } object UserActor { - def props(userId: String, - connEventBus: InternalMessageBus, - meetingId: String): Props = + def props( + userId: String, + connEventBus: InternalMessageBus, + meetingId: String + ): Props = Props(classOf[UserActor], userId, connEventBus, meetingId) } -class UserActor(val userId: String, - connEventBus: InternalMessageBus, - meetingId: String) - extends Actor with ActorLogging with SystemConfiguration { +class UserActor( + val userId: String, + connEventBus: InternalMessageBus, + meetingId: String +) + extends Actor with ActorLogging with SystemConfiguration { private val conns = new Connections private var authorized = false def receive = { - case msg: ClientConnectedMsg => handleConnectMsg(msg) + case msg: ClientConnectedMsg => handleConnectMsg(msg) case msg: ClientDisconnectedMsg => handleDisconnectMsg(msg) - case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg, true) + case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg, true) case msg: BbbCommonEnvJsNodeMsg => handleBbbServerMsg(msg) - case _ => log.debug("***** UserActor cannot handle msg ") + case _ => log.debug("***** UserActor cannot handle msg ") } private def createConnection(id: String, sessionId: String, active: Boolean): Connection = { @@ -156,9 +160,9 @@ class UserActor(val userId: String, // log.debug("**** UserActor handleServerMsg " + msg) println("************* MESSAGE FROM SERVER *********** \n" + msg) msgType match { - case MessageTypes.DIRECT => handleDirectMessage(msg) + case MessageTypes.DIRECT => handleDirectMessage(msg) case MessageTypes.BROADCAST_TO_MEETING => handleBroadcastMessage(msg) - case MessageTypes.SYSTEM => handleSystemMessage(msg) + case MessageTypes.SYSTEM => handleSystemMessage(msg) } } diff --git a/labs/vertx-akka/src/main/resources/application.conf b/labs/vertx-akka/src/universal/conf/application.conf similarity index 100% rename from labs/vertx-akka/src/main/resources/application.conf rename to labs/vertx-akka/src/universal/conf/application.conf diff --git a/labs/vertx-akka/src/main/resources/logback.xml b/labs/vertx-akka/src/universal/conf/logback.xml similarity index 100% rename from labs/vertx-akka/src/main/resources/logback.xml rename to labs/vertx-akka/src/universal/conf/logback.xml