made messages routing-aware + added supervision of Client and Endpoint instances + added pre/post restart hooks that does disconnect/reconnect

This commit is contained in:
jboner 2009-09-02 12:26:27 +02:00
parent 61e5f42767
commit 71283aff11
4 changed files with 275 additions and 388 deletions

View file

@ -4,15 +4,19 @@
package se.scalablesolutions.akka.amqp
import java.lang.String
import com.rabbitmq.client.{AMQP => RabbitMQ, _}
import com.rabbitmq.client.ConnectionFactory
import se.scalablesolutions.akka.kernel.actor.Actor
import se.scalablesolutions.akka.kernel.util.Logging
import se.scalablesolutions.akka.serialization.Serializer
import kernel.actor.{OneForOneStrategy, Actor}
import kernel.config.ScalaConfig._
import kernel.util.Logging
import serialization.Serializer
import org.scala_tools.javautils.Imports._
import java.util.concurrent.ConcurrentHashMap
import java.util.{Timer, TimerTask}
import java.io.IOException
/**
* AMQP Actor API. Implements Client and Endpoint materialized as Actors.
@ -25,34 +29,46 @@ import java.util.{Timer, TimerTask}
* }
* messageConsumer.start
*
* val endpoint = new Endpoint(
* new ConnectionFactory(CONFIG), HOSTNAME, PORT, EXCHANGE, QUEUE, ROUTING_KEY, ExchangeType.Direct, Serializer.Java)
* endpoint.start
* val endpoint = AMQP.newEndpoint(CONFIG, HOSTNAME, PORT, EXCHANGE, QUEUE, ROUTING_KEY, ExchangeType.Direct, Serializer.Java, None, 100)
*
* // register message consumer
* endpoint ! MessageConsumer(messageConsumer)
*
* val client = new Client(new ConnectionFactory(CONFIG), HOSTNAME, PORT, EXCHANGE, ROUTING_KEY, Serializer.Java, None)
* client.start
* client ! Message("Hi")
* val client = AMQP.newClient(CONFIG, HOSTNAME, PORT, EXCHANGE, Serializer.Java, None, None, 100)
* client ! Message("Hi", ROUTING_KEY)
* </pre>
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object AMQP {
case class Message(val payload: AnyRef)
case class MessageConsumer(val listener: Actor)
case class Reconnect(val delay: Long)
object AMQP extends Actor {
private val connections = new ConcurrentHashMap[FaultTolerantConnectionActor, FaultTolerantConnectionActor]
faultHandler = Some(OneForOneStrategy(5, 5000))
trapExit = true
start
class Message(val payload: AnyRef, val routingKey: String, val mandatory: Boolean, val immediate: Boolean)
object Message {
def unapply(message: Message): Option[Tuple4[AnyRef, String, Boolean, Boolean]] =
Some((message.payload, message.routingKey, message.mandatory, message.immediate))
def apply(payload: AnyRef, routingKey: String, mandatory: Boolean, immediate: Boolean): Message =
new Message(payload, routingKey, mandatory, immediate)
def apply(payload: AnyRef, routingKey: String): Message =
new Message(payload, routingKey, false, false)
}
case class MessageConsumer(listener: Actor)
case class Reconnect(delay: Long)
case class Failure(cause: Throwable)
case object Stop
class MessageNotDeliveredException(message: String) extends RuntimeException(message)
sealed trait ExchangeType
sealed trait ExchangeType
object ExchangeType {
case object Direct extends ExchangeType {
override def toString = "direct"
}
case object Topic extends ExchangeType {
override def toString = "topic"
override def toString = "topic"
}
case object Fanout extends ExchangeType {
override def toString = "fanout"
@ -62,6 +78,61 @@ object AMQP {
}
}
def newClient(
config: ConnectionParameters,
hostname: String,
port: Int,
exchangeName: String,
serializer: Serializer,
returnListener: Option[ReturnListener],
shutdownListener: Option[ShutdownListener],
initReconnectDelay: Long): Client = {
val client = new Client(
new ConnectionFactory(config),
hostname, port,
exchangeName,
serializer,
returnListener,
shutdownListener,
initReconnectDelay)
startLink(client)
client
}
def newEndpoint(
config: ConnectionParameters,
hostname: String,
port: Int,
exchangeName: String,
queueName: String,
routingKey: String,
exchangeType: ExchangeType,
serializer: Serializer,
shutdownListener: Option[ShutdownListener],
initReconnectDelay: Long): Endpoint = {
val endpoint = new Endpoint(
new ConnectionFactory(config),
hostname, port,
exchangeName, queueName, routingKey,
exchangeType,
serializer,
shutdownListener,
initReconnectDelay)
startLink(endpoint)
endpoint
}
def stopConnection(connection: FaultTolerantConnectionActor) = {
connection ! Stop
unlink(connection)
connections.remove(connection)
}
override def shutdown = {
connections.values.asScala.foreach(_ ! Stop)
stop
}
/**
* AMQP client actor.
* Usage:
@ -71,24 +142,24 @@ object AMQP {
* params.setPassword("obama")
* params.setVirtualHost("/")
* params.setRequestedHeartbeat(0)
* val client = new AMQP.Client(new ConnectionFactory(params), "localhost", 5672, "exchangeName", "routingKey", Serializer.Java, None, None)
* client.start
* val client = AMQP.newClient(params, "localhost", 5672, "exchangeName", Serializer.Java, None, None, 100)
* client ! Message("hi")
* </pre>
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class Client(
connectionFactory: ConnectionFactory,
hostname: String,
port: Int,
class Client private[amqp] (
val connectionFactory: ConnectionFactory,
val hostname: String,
val port: Int,
exchangeKey: String,
routingKey: String,
serializer: Serializer,
returnListener: Option[ReturnListener],
shutdownListener: Option[ShutdownListener]) extends Actor {
private val connection = connectionFactory.newConnection(hostname, port)
private val channel = connection.createChannel
shutdownListener: Option[ShutdownListener],
val initReconnectDelay: Long)
extends FaultTolerantConnectionActor {
var connection = connectionFactory.newConnection(hostname, port)
var channel = connection.createChannel
returnListener match {
case Some(listener) => channel.setReturnListener(listener)
case None => channel.setReturnListener(new ReturnListener() {
@ -110,34 +181,38 @@ object AMQP {
if (shutdownListener.isDefined) connection.addShutdownListener(shutdownListener.get)
def receive: PartialFunction[Any, Unit] = {
case Message(msg: AnyRef) => send(msg)
case Message(payload, routingKey, mandatory, immediate) =>
channel.basicPublish(exchangeKey, routingKey, mandatory, immediate, null, serializer.out(payload))
case Stop =>
disconnect; stop
}
protected def send(message: AnyRef) = channel.basicPublish(exchangeKey, routingKey, null, serializer.out(message))
def setupChannel = {}
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class Endpoint(
connectionFactory: ConnectionFactory,
hostname: String,
port: Int,
class Endpoint private[amqp] (
val connectionFactory: ConnectionFactory,
val hostname: String,
val port: Int,
exchangeName: String,
queueName: String,
routingKey: String,
exchangeType: ExchangeType,
serializer: Serializer,
shutdownListener: Option[ShutdownListener]) extends Actor {
private var connection = connectionFactory.newConnection(hostname, port)
private var channel = connection.createChannel
private val reconnectionTimer = new Timer
private var listeners: List[Actor] = Nil
private val endpoint = this
shutdownListener: Option[ShutdownListener],
val initReconnectDelay: Long)
extends FaultTolerantConnectionActor {
var connection = connectionFactory.newConnection(hostname, port)
var channel = connection.createChannel
var listeners: List[Actor] = Nil
val endpoint = this
if (shutdownListener.isDefined) connection.addShutdownListener(shutdownListener.get)
setupChannel
private def setupChannel = {
def setupChannel = {
channel.exchangeDeclare(exchangeName, exchangeType.toString)
channel.queueDeclare(queueName)
channel.queueBind(queueName, exchangeName, routingKey)
@ -147,33 +222,80 @@ object AMQP {
envelope: Envelope,
properties: RabbitMQ.BasicProperties,
payload: Array[Byte]) {
endpoint ! Message(serializer.in(payload, None))
channel.basicAck(envelope.getDeliveryTag, false)
try {
endpoint ! Message(serializer.in(payload, None), envelope.getRoutingKey)
channel.basicAck(envelope.getDeliveryTag, false)
} catch {
case cause => endpoint ! Failure(cause) // pass on and rethrow exception in endpoint actor to trigger restart and reconnect
}
}
})
}
def receive: PartialFunction[Any, Unit] = {
case message: Message => listeners.foreach(_ ! message)
case MessageConsumer(listener) => listeners ::= listener
case Reconnect(delay) => reconnect(delay)
case unknown => throw new IllegalArgumentException("Unknown message to AMQP Endpoint [" + unknown + "]")
case message: Message => listeners.foreach(_ ! message)
case Reconnect(delay) => reconnect(delay)
case Failure(cause) => throw cause
case Stop => disconnect; stop
case unknown => throw new IllegalArgumentException("Unknown message to AMQP Endpoint [" + unknown + "]")
}
}
trait FaultTolerantConnectionActor extends Actor {
lifeCycleConfig = Some(LifeCycle(Permanent, 100))
val reconnectionTimer = new Timer
var connection: Connection
var channel: Channel
val connectionFactory: ConnectionFactory
val hostname: String
val port: Int
val initReconnectDelay: Long
def setupChannel
protected def disconnect = {
try {
channel.close
} catch {
case e: IOException => log.error("Could not close AMQP channel %s:%s", hostname, port)
case _ => ()
}
try {
connection.close
log.debug("Disconnected AMQP connection at %s:%s", hostname, port)
} catch {
case e: IOException => log.error("Could not close AMQP connection %s:%s", hostname, port)
case _ => ()
}
}
private def reconnect(delay: Long) = {
protected def reconnect(delay: Long) = {
disconnect
try {
connection = connectionFactory.newConnection(hostname, port)
channel = connection.createChannel
setupChannel
log.debug("Successfully reconnected to AMQP Server")
log.debug("Successfully reconnected to AMQP Server %s:%s", hostname, port)
} catch {
case e: Exception =>
val waitInMillis = delay * 2
log.debug("Trying to reconnect to AMQP server in %n milliseconds" + waitInMillis)
reconnectionTimer.schedule(new TimerTask() {override def run = endpoint ! Reconnect(waitInMillis)}, delay)
val self = this
log.debug("Trying to reconnect to AMQP server in %n milliseconds", waitInMillis)
reconnectionTimer.schedule(new TimerTask() { override def run = self ! Reconnect(waitInMillis) }, delay)
}
}
override def preRestart(reason: AnyRef, config: Option[AnyRef]) = disconnect
override def postRestart(reason: AnyRef, config: Option[AnyRef]) = reconnect(initReconnectDelay)
}
def receive: PartialFunction[Any, Unit] = {
case _ => {} // ignore all messages
}
}
object ExampleAMQPSession {
@ -189,20 +311,23 @@ object ExampleAMQPSession {
val messageConsumer = new Actor() {
def receive: PartialFunction[Any, Unit] = {
case Message(payload) => log.debug("Received message: %s", payload)
case Message(payload, _, _, _) => log.debug("Received message: %s", payload)
}
}
messageConsumer.start
val endpoint = new Endpoint(
new ConnectionFactory(CONFIG), HOSTNAME, PORT, EXCHANGE, QUEUE, ROUTING_KEY, ExchangeType.Direct, SERIALIZER, None)
endpoint.start
val endpoint = AMQP.newEndpoint(CONFIG, HOSTNAME, PORT, EXCHANGE, QUEUE, ROUTING_KEY, ExchangeType.Direct, SERIALIZER, None, 100)
// register message consumer
endpoint ! MessageConsumer(messageConsumer)
val client = new Client(new ConnectionFactory(CONFIG), HOSTNAME, PORT, EXCHANGE, ROUTING_KEY, SERIALIZER, None, None)
client.start
client ! Message(ROUTING_KEY + " I'm going surfing")
val client = AMQP.newClient(CONFIG, HOSTNAME, PORT, EXCHANGE, SERIALIZER, None, None, 100)
client ! Message(ROUTING_KEY + " I'm going surfing", ROUTING_KEY)
Thread.sleep(1000)
client ! Message(ROUTING_KEY + " I'm going surfing", ROUTING_KEY)
Thread.sleep(1000)
client ! Message(ROUTING_KEY + " I'm going surfing", ROUTING_KEY)
Thread.sleep(1000)
client ! Message(ROUTING_KEY + " I'm going surfing", ROUTING_KEY)
}
}

View file

@ -1362,6 +1362,17 @@
<root url="jar://$MAVEN_REPOSITORY$/org/atmosphere/atmosphere-compat/0.3/atmosphere-compat-0.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: commons-io:commons-io:1.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: junit:junit:4.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.5/junit-4.5.jar!/" />
@ -1582,6 +1593,17 @@
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.scala-tools.testing:scalatest:0.9.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.scala-lang:scala-compiler:2.7.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-compiler/2.7.5/scala-compiler-2.7.5.jar!/" />
@ -1714,28 +1736,6 @@
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty-util/7.0.0.pre5/jetty-util-7.0.0.pre5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.scala-tools.testing:scalatest:0.9.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: commons-io:commons-io:1.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/1.4/commons-io-1.4-sources.jar!/" />
</SOURCES>
</library>
</component>
<UsedPathMacros>
<macro name="MAVEN_REPOSITORY" description="Maven Local Repostiry" />

381
akka.iws
View file

@ -2,13 +2,7 @@
<project relativePaths="false" version="4">
<component name="ChangeListManager">
<list default="true" readonly="true" id="d8b7c92c-a9d3-4b9d-89b5-ef04194c68b8" name="Default" comment="">
<change type="DELETED" beforePath="$PROJECT_DIR$/util-java/akka-util-java.iml" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/samples-scala/akka-samples-scala.iml" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/akka-kernel.iml" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/samples-java/akka-samples-java.iml" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-amqp/pom.xml" afterPath="$PROJECT_DIR$/akka-amqp/pom.xml" />
<change type="DELETED" beforePath="$PROJECT_DIR$/samples-lift/akka-samples-lift.iml" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/fun-test-java/akka-fun-test-java.iml" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/util/Scheduler.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/util/Scheduler.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.ipr" afterPath="$PROJECT_DIR$/akka.ipr" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.iws" afterPath="$PROJECT_DIR$/akka.iws" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" afterPath="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" />
@ -69,59 +63,8 @@
<file leaf-file-name="Actor.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="16" selection-start="1530" selection-end="1530" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251790823000" expanded="false" signature="0:49" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="106:558" placeholder="..." />
<marker date="1251790823000" expanded="true" signature="935:1218" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1220:1291" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1359:1425" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1427:1498" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1512:1669" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1671:1742" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1798:24073" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="2744:2915" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="2965:3869" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4141:4292" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4354:4495" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4547:4883" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4954:5435" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5491:5658" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5702:5905" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5979:6182" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6257:6421" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6511:6568" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6680:6733" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6993:7077" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="7284:7779" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="8121:8630" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="8700:8865" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="9190:9307" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="9634:9733" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10081:10184" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10331:10434" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10560:10901" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="11111:11524" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="11568:11996" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12000:12091" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12137:12553" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12557:12666" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12715:12752" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12756:12878" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12933:13033" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13037:13167" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="13235:13383" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13387:13530" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="13604:13815" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13819:13955" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="14027:14095" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="14099:14248" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="14326:14457" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="16659:16775" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="17050:17933" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="18010:19404" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="20437:21114" placeholder="{...}" />
</folding>
<state line="556" column="50" selection-start="21523" selection-end="21562" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
@ -130,20 +73,7 @@
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="53" selection-start="772" selection-end="772" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251788225000" expanded="false" signature="0:49" placeholder="/**...*/" />
<marker date="1251788225000" expanded="true" signature="100:541" placeholder="..." />
<marker date="1251788225000" expanded="true" signature="543:614" placeholder="/**...*/" />
<marker date="1251788225000" expanded="true" signature="645:7522" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="2340:3302" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="3352:4447" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4490:4727" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4609:4670" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4747:5954" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="5984:6346" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="6383:7520" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="7527:7834" placeholder="/.../" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -152,72 +82,7 @@
<entry file="file://$PROJECT_DIR$/kernel/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="28" selection-start="286" selection-end="286" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251788270000" expanded="true" signature="50:8399" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="371:537" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="576:6552" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="593:737" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="754:888" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="905:1057" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1074:1219" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1236:1363" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1380:1500" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1517:1653" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1670:1810" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1827:1957" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1974:2100" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2117:2252" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2310:2453" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2470:2615" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2632:2771" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2788:2907" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2924:3050" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3067:3200" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3217:3350" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3367:3487" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3529:3650" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3695:3837" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3854:3977" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3994:4116" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4133:4264" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4319:4466" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4483:4620" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4637:4772" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4789:4915" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4932:5086" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5103:5237" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5254:5400" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5417:5553" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5608:5737" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5754:5879" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5896:6014" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6031:6168" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6211:6376" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6393:6534" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6563:8388" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6577:7903" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6592:7351" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6706:7335" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6728:7313" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6826:6881" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6909:7290" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6940:7077" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6972:7045" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7101:7262" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7128:7237" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7366:7888" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7440:7872" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7462:7850" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7525:7755" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7547:7726" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7638:7702" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7775:7827" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7919:8377" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7936:8159" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8033:8141" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8176:8360" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8282:8342" placeholder="..." />
</folding>
<folding />
</state>
</provider>
</entry>
@ -225,7 +90,25 @@
<file leaf-file-name="AMQP.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="202" column="3" selection-start="6872" selection-end="6872" vertical-scroll-proportion="0.8488529">
<state line="55" column="6" selection-start="1988" selection-end="1988" vertical-scroll-proportion="0.02116402">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Scheduler.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/util/Scheduler.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="2" selection-start="1200" selection-end="1200" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SimpleService.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/samples-scala/src/main/scala/SimpleService.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="35" selection-start="896" selection-end="921" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -240,15 +123,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="Channel.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/com/rabbitmq/rabbitmq-client/0.9.1/rabbitmq-client-0.9.1.jar!/com/rabbitmq/client/Channel.class">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="9" selection-start="635" selection-end="635" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/akka-amqp/pom.xml">
<provider selected="true" editor-type-id="text-editor">
@ -268,7 +142,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQPSender.scala" />
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQPActor.scala" />
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQPDispatcher.scala" />
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQPClientActor.scala" />
@ -283,6 +156,7 @@
<option value="$PROJECT_DIR$/samples-java/src/main/java/sample/java/SimpleService.java" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala" />
<option value="$PROJECT_DIR$/akka-amqp/pom.xml" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/util/Scheduler.scala" />
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" />
</list>
</option>
@ -319,24 +193,10 @@
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-amqp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-amqp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-amqp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</component>
@ -467,7 +327,7 @@
</method>
</configuration>
<configuration default="false" name="ExampleAMQPSession" type="Application" factoryName="Application" enabled="false" merge="false" sample_coverage="true" runner="emma">
<option name="MAIN_CLASS_NAME" value="com.scalablesolutions.akka.amqp.ExampleAMQPSession" />
<option name="MAIN_CLASS_NAME" value="se.scalablesolutions.akka.amqp.ExampleAMQPSession" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
@ -521,19 +381,19 @@
<editor active="true" />
<layout>
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294881" sideWeight="0.6619898" order="3" side_tool="false" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1744773" sideWeight="0.44132653" order="0" side_tool="false" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="1" side_tool="false" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.5497449" sideWeight="0.5" order="2" side_tool="false" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24873829" sideWeight="0.44132653" order="0" side_tool="false" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39923468" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32918397" sideWeight="0.5" order="1" side_tool="false" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" />
@ -584,153 +444,17 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="16" selection-start="1530" selection-end="1530" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251790823000" expanded="false" signature="0:49" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="106:558" placeholder="..." />
<marker date="1251790823000" expanded="true" signature="935:1218" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1220:1291" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1359:1425" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1427:1498" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1512:1669" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="1671:1742" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="1798:24073" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="2744:2915" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="2965:3869" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4141:4292" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4354:4495" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4547:4883" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="4954:5435" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5491:5658" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5702:5905" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="5979:6182" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6257:6421" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6511:6568" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6680:6733" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="6993:7077" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="7284:7779" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="8121:8630" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="8700:8865" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="9190:9307" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="9634:9733" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10081:10184" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10331:10434" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="10560:10901" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="11111:11524" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="11568:11996" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12000:12091" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12137:12553" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12557:12666" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12715:12752" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="12756:12878" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="12933:13033" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13037:13167" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="13235:13383" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13387:13530" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="13604:13815" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="13819:13955" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="14027:14095" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="14099:14248" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="14326:14457" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="16659:16775" placeholder="/**...*/" />
<marker date="1251790823000" expanded="true" signature="17050:17933" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="18010:19404" placeholder="{...}" />
<marker date="1251790823000" expanded="true" signature="20437:21114" placeholder="{...}" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="53" selection-start="772" selection-end="772" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251788225000" expanded="false" signature="0:49" placeholder="/**...*/" />
<marker date="1251788225000" expanded="true" signature="100:541" placeholder="..." />
<marker date="1251788225000" expanded="true" signature="543:614" placeholder="/**...*/" />
<marker date="1251788225000" expanded="true" signature="645:7522" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="2340:3302" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="3352:4447" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4490:4727" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4609:4670" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="4747:5954" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="5984:6346" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="6383:7520" placeholder="{...}" />
<marker date="1251788225000" expanded="true" signature="7527:7834" placeholder="/.../" />
</folding>
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="28" selection-start="286" selection-end="286" vertical-scroll-proportion="0.0">
<folding>
<marker date="1251788270000" expanded="true" signature="50:8399" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="371:537" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="576:6552" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="593:737" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="754:888" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="905:1057" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1074:1219" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1236:1363" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1380:1500" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1517:1653" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1670:1810" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1827:1957" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="1974:2100" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2117:2252" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2310:2453" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2470:2615" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2632:2771" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2788:2907" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="2924:3050" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3067:3200" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3217:3350" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3367:3487" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3529:3650" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3695:3837" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3854:3977" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="3994:4116" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4133:4264" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4319:4466" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4483:4620" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4637:4772" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4789:4915" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="4932:5086" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5103:5237" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5254:5400" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5417:5553" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5608:5737" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5754:5879" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="5896:6014" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6031:6168" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6211:6376" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6393:6534" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6563:8388" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6577:7903" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6592:7351" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6706:7335" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6728:7313" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6826:6881" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6909:7290" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6940:7077" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="6972:7045" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7101:7262" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7128:7237" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7366:7888" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7440:7872" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7462:7850" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7525:7755" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7547:7726" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7638:7702" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7775:7827" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7919:8377" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="7936:8159" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8033:8141" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8176:8360" placeholder="..." />
<marker date="1251788270000" expanded="true" signature="8282:8342" placeholder="..." />
</folding>
<folding />
</state>
</provider>
</entry>
@ -762,9 +486,30 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="556" column="50" selection-start="21523" selection-end="21562" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/samples-scala/src/main/scala/SimpleService.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="35" selection-start="896" selection-end="921" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/util/Scheduler.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="2" selection-start="1200" selection-end="1200" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/rabbitmq/rabbitmq-client/0.9.1/rabbitmq-client-0.9.1.jar!/com/rabbitmq/client/Channel.class">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="9" selection-start="635" selection-end="635" vertical-scroll-proportion="0.0">
<state line="21" column="9" selection-start="639" selection-end="639" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -776,9 +521,23 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/akka-util/target/classes/se/scalablesolutions/akka/Config.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/akka-actors/target/classes/se/scalablesolutions/akka/config/ScalaConfig.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="202" column="3" selection-start="6872" selection-end="6872" vertical-scroll-proportion="0.8488529">
<state line="55" column="6" selection-start="1988" selection-end="1988" vertical-scroll-proportion="0.02116402">
<folding />
</state>
</provider>

View file

@ -15,6 +15,7 @@ package se.scalablesolutions.akka.kernel.util
import java.util.concurrent._
import kernel.actor.{OneForOneStrategy, Actor}
import kernel.config.ScalaConfig._
import org.scala_tools.javautils.Imports._
@ -26,6 +27,8 @@ case class SchedulerException(msg: String, e: Throwable) extends RuntimeExceptio
* which is licensed under the Apache 2 License.
*/
class ScheduleActor(val receiver: Actor, val future: ScheduledFuture[AnyRef]) extends Actor with Logging {
lifeCycleConfig = Some(LifeCycle(Permanent, 100))
def receive: PartialFunction[Any, Unit] = {
case UnSchedule =>
Scheduler.stopSupervising(this)