blob: be72364a007418c7a62b97d1286b005dee90e114 [file] [log] [blame]
package org.apache.esme.actor
import akka.camel.{CamelMessage, Consumer}
import net.liftweb.common.{Empty, Logger}
import collection.immutable.Queue
import org.apache.esme.actor.Distributor.UserCreatedMessage
import org.apache.esme.model.User
object XmppReceiver {
val logger: Logger = Logger("org.apache.esme.actor")
case class FetchMessages()
}
class XmppReceiver(esmeSrv: String, esmePort: Int, esmeUsr: String, esmePwd: String, xmppServiceName: String, participant: String, user: User) extends Consumer {
import XmppReceiver._
var messages: List[(String, Long)] = List.empty
def endpointUri = {val uri = "xmpp://%s@%s:%s/%s?password=%s" format (esmeUsr, esmeSrv, esmePort, participant, esmePwd); logger.info("XMPP URI is: %s".format(uri)); uri}
override def preStart() {
logger.info("XmppReceiver - preStart() called")
}
def receive = {
case msg: CamelMessage => {
messages = (msg.bodyAs[String], System.currentTimeMillis) :: messages
}
case FetchMessages => {
messages.foreach(message =>
Distributor ! UserCreatedMessage(
if (user != null) {user.id} else 0,
message._1,
Nil,
message._2,
Empty,
participant,
Empty,
None
)
)
messages = List.empty
}
case _ => logger.error("Incoming message is not Camel Message!")
}
}