/* * Copyright 2017 PayPal * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.squbs.actorregistry import java.lang.management.ManagementFactory import javax.management.MXBean import akka.actor.{ActorContext, ActorRef} import org.squbs.unicomplex.JMX._ private[actorregistry] object ActorRegistryBean { val Pattern = "org.squbs.unicomplex:type=ActorRegistry,name=" val Total = Pattern + "*" def objName(actor: ActorRef) (implicit context: ActorContext)= prefix + Pattern + actor.path.toString.split(s"${actor.path.root}user/").mkString("") def totalBeans(implicit context: ActorContext) = ManagementFactory.getPlatformMBeanServer.queryNames(prefix + Total, null) } @MXBean private[actorregistry] trait ActorRegistryMXBean { def getPath : String def getActorMessageTypeList: java.util.List[String] } @MXBean private[actorregistry] trait ActorRegistryConfigMXBean { def getCount : Int def getTimeout: Int } private[actorregistry] class ActorRegistryConfigBean(timeout: Int, implicit val context: ActorContext) extends ActorRegistryConfigMXBean { def getCount : Int = ActorRegistryBean.totalBeans.size def getTimeout: Int = timeout }