Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rpcService.subscribe("scout.configurator.update-keywords")(receiveKeywords)
- }
- var keywordsConf: Option[KeywordsConfig] = None
- log.info("Configurator started")
- def receive = {
- case msg @ UpdateKeywordsConf(kwConfig) ⇒
- log.warning("Update keywords config: {}", kwConfig)
- keywordsConf = Some(kwConfig)
- unstashAll()
- context.system.eventStream.publish(msg)
- case GetKeywordsConfig ⇒
- keywordsConf match {
- case Some(conf) ⇒ sender ! conf
- case _ ⇒ stash()
- }
- }
- private def receiveKeywords(msg: Delivery) {
- val cfg = KeywordsConfigProto.parseFrom(msg.body)
- self ! UpdateKeywordsConf(KeywordsConfig(
- keywords = cfg.keywords map { kw ⇒ Keyword(
- kw.id,
- kw.topicId,
- kw.plain,
- kw.lucene.filter(_.trim.nonEmpty),
- kw.luceneSimple.filter(_.trim.nonEmpty)
- ) },
- customers = cfg.customers map { c ⇒ Customer(c.id, c.name, c.authKey) },
- topics = cfg.topics map { t ⇒ Topic(t.id, t.name, t.customerId) }
- ))
- }
- }
- /**
- * Helper trait for get and subscribe to keywords update
- */
- trait KeywordsConfigConsumer extends Actor with Stash with ActorLogging {
- private var keywordsConfigOpt: Option[KeywordsConfig] = None
- protected def keywordsConfig = keywordsConfigOpt.get
- override def preStart() {
- context.become({
- case kw: KeywordsConfig ⇒
- updateKeywords(kw)
- context.unbecome()
- unstashAll()
- context.system.eventStream.subscribe(self, classOf[UpdateKeywordsConf])
- case _ ⇒ stash()
- })
Advertisement
Add Comment
Please, Sign In to add comment