* added some missing copyright headers * Use ask inside ThrottlerTransportAdapter * Change signature of managementCommand
80 lines
No EOL
2.8 KiB
Scala
80 lines
No EOL
2.8 KiB
Scala
/**
|
|
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
|
|
*/
|
|
package akka.remote
|
|
|
|
import akka.event.{ LoggingAdapter, Logging }
|
|
import akka.actor.{ ActorSystem, Address }
|
|
import scala.beans.BeanProperty
|
|
import java.util.{ Set ⇒ JSet }
|
|
import scala.collection.JavaConverters.setAsJavaSetConverter
|
|
|
|
sealed trait RemotingLifecycleEvent extends Serializable {
|
|
def logLevel: Logging.LogLevel
|
|
}
|
|
|
|
sealed trait AssociationEvent extends RemotingLifecycleEvent {
|
|
def localAddress: Address
|
|
def remoteAddress: Address
|
|
def inbound: Boolean
|
|
protected def eventName: String
|
|
final def getRemoteAddress: Address = remoteAddress
|
|
final def getLocalAddress: Address = localAddress
|
|
final def isInbound: Boolean = inbound
|
|
override def toString: String = s"$eventName [$localAddress]${if (inbound) " <- " else " -> "}[$remoteAddress]"
|
|
}
|
|
|
|
final case class AssociatedEvent(
|
|
localAddress: Address,
|
|
remoteAddress: Address,
|
|
inbound: Boolean)
|
|
extends AssociationEvent {
|
|
|
|
protected override val eventName: String = "Associated"
|
|
override def logLevel: Logging.LogLevel = Logging.DebugLevel
|
|
|
|
}
|
|
|
|
final case class DisassociatedEvent(
|
|
localAddress: Address,
|
|
remoteAddress: Address,
|
|
inbound: Boolean)
|
|
extends AssociationEvent {
|
|
protected override val eventName: String = "Disassociated"
|
|
override def logLevel: Logging.LogLevel = Logging.DebugLevel
|
|
}
|
|
|
|
final case class AssociationErrorEvent(
|
|
cause: Throwable,
|
|
localAddress: Address,
|
|
remoteAddress: Address,
|
|
inbound: Boolean) extends AssociationEvent {
|
|
protected override val eventName: String = "AssociationError"
|
|
override def logLevel: Logging.LogLevel = Logging.ErrorLevel
|
|
override def toString: String = s"${super.toString}: Error[${Logging.stackTraceFor(cause)}]"
|
|
def getCause: Throwable = cause
|
|
}
|
|
|
|
final case class RemotingListenEvent(listenAddresses: Set[Address]) extends RemotingLifecycleEvent {
|
|
def getListenAddresses: JSet[Address] = listenAddresses.asJava
|
|
override def logLevel: Logging.LogLevel = Logging.InfoLevel
|
|
override def toString: String = "Remoting now listens on addresses: " + listenAddresses.mkString("[", ", ", "]")
|
|
}
|
|
|
|
case object RemotingShutdownEvent extends RemotingLifecycleEvent {
|
|
override def logLevel: Logging.LogLevel = Logging.InfoLevel
|
|
override val toString: String = "Remoting shut down"
|
|
}
|
|
|
|
final case class RemotingErrorEvent(cause: Throwable) extends RemotingLifecycleEvent {
|
|
def getCause: Throwable = cause
|
|
override def logLevel: Logging.LogLevel = Logging.ErrorLevel
|
|
override def toString: String = s"Remoting error: [${Logging.stackTraceFor(cause)}]"
|
|
}
|
|
|
|
class EventPublisher(system: ActorSystem, log: LoggingAdapter, logEvents: Boolean) {
|
|
def notifyListeners(message: RemotingLifecycleEvent): Unit = {
|
|
system.eventStream.publish(message)
|
|
if (logEvents) log.log(message.logLevel, "{}", message)
|
|
}
|
|
} |