Advertisement
Guest User

Untitled

a guest
Mar 24th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.97 KB | None | 0 0
  1.  
  2. class DistributedTellDispatcher(val role: Option[String]) extends Proxy with RandomSelector with ActorTracing {
  3.   val path = self.path.elements.mkString("/")
  4.   def receiver = random
  5.  
  6.   override protected def serviceName: String =
  7.     NodeConfig.moduleName
  8.  
  9.   override def process: Receive = {
  10.     case msg: TracingSupport if role.isEmpty || role.get == NodeConfig.role.toString =>
  11.       trace.sample(msg, NodeConfig.moduleName)
  12.       CommonServices.apiRouter.tell(msg, sender())
  13.  
  14.     case msg if role.isEmpty || role.get == NodeConfig.role.toString =>
  15.       CommonServices.apiRouter.tell(msg, sender())
  16.   }
  17. }
  18.  
  19. class DistributedAskDispatcher(val role: Option[String]) extends Proxy with RandomSelector with ActorTracing {
  20.   import context.dispatcher
  21.   import me.selfish.common.CommonConfig.Timeouts.Background
  22.   val path = self.path.elements.mkString("/")
  23.   def receiver = random
  24.  
  25.   override protected def serviceName: String =
  26.     NodeConfig.moduleName
  27.  
  28.   override def process: Receive = {
  29.     case msg: TracingSupport  if role.isEmpty || role.get == NodeConfig.role.toString =>
  30.       trace.sample(msg, NodeConfig.moduleName)
  31.       CommonServices.apiRouter ? msg map {
  32.         case result =>
  33.           trace.record(msg, "Ask service response: " + result)
  34.           trace.finish(msg)
  35.           result
  36.       } recover {
  37.         case e: ControlThrowable =>
  38.           throw e
  39.  
  40.         case e: AskTimeoutException =>
  41.           trace.record(msg, "Ask timeout in " + NodeConfig.role + " node")
  42.           trace.finish(msg)
  43.           ErrorResponse.ServiceUnavailable
  44.  
  45.         case e: Throwable =>
  46.           trace.record(msg, "InternalServerError in " + NodeConfig.role + " node")
  47.           trace.record(msg, e)
  48.           trace.finish(msg)
  49.           ErrorResponse.InternalServerError("distributed ask error " + msg)
  50.       } pipeTo sender
  51.  
  52.     case msg  if role.isEmpty || role.get == NodeConfig.role.toString =>
  53.       CommonServices.apiRouter.tell(msg, sender())
  54.   }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement