merged with master

This commit is contained in:
Viktor Klang 2009-12-18 21:10:50 +01:00
commit ec8feae565
69 changed files with 312 additions and 709 deletions

View file

@ -70,19 +70,19 @@
<!-- For Protocol/Serialization -->
<dependency>
<groupId>org.h2.compress</groupId>
<groupId>voldemort.store.compress</groupId>
<artifactId>h2-lzf</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.1.0</version>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.1.0</version>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>

View file

@ -6,8 +6,8 @@ package se.scalablesolutions.akka.actor
import java.net.InetSocketAddress
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.nio.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.remote.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.serialization.Serializer
import se.scalablesolutions.akka.util._

View file

@ -4,17 +4,16 @@
package se.scalablesolutions.akka.actor
import java.net.InetSocketAddress
import se.scalablesolutions.akka.Config._
import se.scalablesolutions.akka.dispatch._
import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy}
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.stm.Transaction._
import se.scalablesolutions.akka.stm.TransactionManagement._
import se.scalablesolutions.akka.stm.{StmException, TransactionManagement}
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.nio.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.remote.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.serialization.Serializer
import se.scalablesolutions.akka.util.Helpers.ReadWriteLock
import se.scalablesolutions.akka.util.{HashCode, Logging}
import org.codehaus.aspectwerkz.proxy.Uuid
@ -23,6 +22,7 @@ import org.multiverse.api.ThreadLocalTransaction._
import java.util.{Queue, HashSet}
import java.util.concurrent.ConcurrentLinkedQueue
import java.net.InetSocketAddress
/**
* Implements the Transactor abstraction. E.g. a transactional actor.
@ -48,7 +48,8 @@ case class Restart(reason: AnyRef) extends LifeCycleMessage
case class Exit(dead: Actor, killer: Throwable) extends LifeCycleMessage
case object Kill extends LifeCycleMessage
class ActorKilledException private[akka] (val killed: Actor) extends RuntimeException("Actor [" + killed + "] was killed by a Kill message")
class ActorKilledException private[akka] (val killed: Actor)
extends RuntimeException("Actor [" + killed + "] was killed by a Kill message")
sealed abstract class DispatcherType
object DispatcherType {
@ -218,7 +219,6 @@ trait Actor extends TransactionManagement {
implicit protected val self: Actor = this
// FIXME http://www.assembla.com/spaces/akka/tickets/56-Change-UUID-generation-for-the-TransactionManagement-trait
// Only mutable for RemoteServer in order to maintain identity across nodes
private[akka] var _uuid = Uuid.newUuid.toString
def uuid = _uuid
@ -227,10 +227,11 @@ trait Actor extends TransactionManagement {
// private fields
// ====================================
@volatile private var _isRunning = false
@volatile private var _isSuspended = true
@volatile private var _isShutDown: Boolean = false
private var _isEventBased: Boolean = false
@volatile private[this] var _isRunning = false
@volatile private[this] var _isSuspended = true
@volatile private[this] var _isShutDown = false
@volatile private[this] var _isEventBased: Boolean = false
@volatile private[akka] var _isKilled = false
private var _hotswap: Option[PartialFunction[Any, Unit]] = None
private[akka] var _remoteAddress: Option[InetSocketAddress] = None
private[akka] var _linkedActors: Option[HashSet[Actor]] = None
@ -252,14 +253,14 @@ trait Actor extends TransactionManagement {
* message exchanges and which is in many ways better than using the '!!' method
* which will make the sender wait for a reply using a *blocking* future.
*/
protected[this] var sender: Option[Actor] = None
protected var sender: Option[Actor] = None
/**
* The 'senderFuture' field should normally not be touched by user code, which should instead use the 'reply' method.
* But it can be used for advanced use-cases when one might want to store away the future and
* resolve it later and/or somewhere else.
*/
protected[this] var senderFuture: Option[CompletableFutureResult] = None
protected var senderFuture: Option[CompletableFutureResult] = None
// ====================================
// ==== USER CALLBACKS TO OVERRIDE ====
@ -316,7 +317,7 @@ trait Actor extends TransactionManagement {
* trapExit = List(classOf[MyApplicationException], classOf[MyApplicationError])
* </pre>
*/
protected[this] var trapExit: List[Class[_ <: Throwable]] = Nil
protected var trapExit: List[Class[_ <: Throwable]] = Nil
/**
* User overridable callback/setting.
@ -490,11 +491,13 @@ trait Actor extends TransactionManagement {
/**
* Same as the '!' method but does not take an implicit sender as second parameter.
*/
def send(message: Any) =
def send(message: Any) = {
if (_isKilled) throw new ActorKilledException(this)
if (_isRunning) postMessageToMailbox(message, None)
else throw new IllegalStateException(
"Actor has not been started, you need to invoke 'actor.start' before using it")
}
/**
* Sends a message asynchronously and waits on a future for a reply message.
* <p/>
@ -507,21 +510,24 @@ trait Actor extends TransactionManagement {
* If you are sending messages using <code>!!</code> then you <b>have to</b> use <code>reply(..)</code>
* to send a reply message to the original sender. If not then the sender will block until the timeout expires.
*/
def !![T](message: Any, timeout: Long): Option[T] = if (_isRunning) {
val future = postMessageToMailboxAndCreateFutureResultWithTimeout(message, timeout)
val isActiveObject = message.isInstanceOf[Invocation]
if (isActiveObject && message.asInstanceOf[Invocation].isVoid) future.completeWithResult(None)
try {
future.await
} catch {
case e: FutureTimeoutException =>
if (isActiveObject) throw e
else None
}
getResultOrThrowException(future)
} else throw new IllegalStateException(
"Actor has not been started, you need to invoke 'actor.start' before using it")
def !![T](message: Any, timeout: Long): Option[T] = {
if (_isKilled) throw new ActorKilledException(this)
if (_isRunning) {
val future = postMessageToMailboxAndCreateFutureResultWithTimeout(message, timeout)
val isActiveObject = message.isInstanceOf[Invocation]
if (isActiveObject && message.asInstanceOf[Invocation].isVoid) future.completeWithResult(None)
try {
future.await
} catch {
case e: FutureTimeoutException =>
if (isActiveObject) throw e
else None
}
getResultOrThrowException(future)
} else throw new IllegalStateException(
"Actor has not been started, you need to invoke 'actor.start' before using it")
}
/**
* Sends a message asynchronously and waits on a future for a reply message.
* <p/>
@ -868,6 +874,7 @@ trait Actor extends TransactionManagement {
else throw new IllegalArgumentException("No handler matching message [" + message + "] in " + toString)
} catch {
case e =>
_isKilled = true
Actor.log.error(e, "Could not invoke actor [%s]", this)
// FIXME to fix supervisor restart of remote actor for oneway calls, inject a supervisor proxy that can send notification back to client
if (_supervisor.isDefined) _supervisor.get ! Exit(this, e)
@ -969,6 +976,7 @@ trait Actor extends TransactionManagement {
preRestart(reason)
Actor.log.info("Restarting actor [%s] configured as PERMANENT.", id)
postRestart(reason)
_isKilled = false
}
private[akka] def registerSupervisorAsRemoteActor: Option[String] = synchronized {

View file

@ -16,6 +16,7 @@ package se.scalablesolutions.akka.actor
import java.util.concurrent._
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy}
import se.scalablesolutions.akka.util.{Logging}
import org.scala_tools.javautils.Imports._

View file

@ -5,17 +5,13 @@
package se.scalablesolutions.akka.actor
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.config.{ConfiguratorRepository, Configurator}
import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy, ConfiguratorRepository, Configurator}
import se.scalablesolutions.akka.util.Helpers._
import se.scalablesolutions.akka.util.Logging
import se.scalablesolutions.akka.dispatch.Dispatchers
import java.util.concurrent.ConcurrentHashMap
sealed abstract class FaultHandlingStrategy
case class AllForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy
case class OneForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy
/**
* Abstract base class for all supervisor factories.
* <p>

View file

@ -7,6 +7,10 @@ package se.scalablesolutions.akka.config
import se.scalablesolutions.akka.actor.Actor
import se.scalablesolutions.akka.dispatch.MessageDispatcher
sealed abstract class FaultHandlingStrategy
case class AllForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy
case class OneForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy
/**
* Configuration classes - not to be used as messages.
*

View file

@ -56,30 +56,21 @@ package se.scalablesolutions.akka.dispatch
class ExecutorBasedEventDrivenDispatcher(_name: String) extends MessageDispatcher with ThreadPoolBuilder {
@volatile private var active: Boolean = false
val name = "event-driven:executor:dispatcher:" + _name
val name: String = "event-driven:executor:dispatcher:" + _name
withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity.buildThreadPool
def processMessages(invocation: MessageInvocation): Unit = while (true) {
val message = invocation.receiver._mailbox.poll
if (message == null) return
else message.invoke
}
def dispatch(invocation: MessageInvocation) = if (active) {
executor.execute(new Runnable() {
def run = {
invocation.receiver.synchronized {
processMessages(invocation)
}
/* invocation.receiver.synchronized {
val messages = invocation.receiver._mailbox.iterator
while (messages.hasNext) {
messages.next.asInstanceOf[MessageInvocation].invoke
messages.remove
}
}
*/ }
}
})
} else throw new IllegalStateException("Can't submit invocations to dispatcher since it's not started")

View file

@ -12,18 +12,19 @@ import java.util.Collection
trait ThreadPoolBuilder {
val name: String
private val NR_START_THREADS = 4
private val NR_MAX_THREADS = 128
private val KEEP_ALIVE_TIME = 60000L // default is one minute
private val MILLISECONDS = TimeUnit.MILLISECONDS
private var threadPoolBuilder: ThreadPoolExecutor = _
private val threadFactory = new MonitorableThreadFactory(name)
private var boundedExecutorBound = -1
private var inProcessOfBuilding = false
private var blockingQueue: BlockingQueue[Runnable] = _
private lazy val threadFactory = new MonitorableThreadFactory(name)
protected var executor: ExecutorService = _
def buildThreadPool = synchronized {
@ -38,7 +39,7 @@ trait ThreadPoolBuilder {
}
}
def withNewThreadPoolWithQueue(queue: BlockingQueue[Runnable]): ThreadPoolBuilder = synchronized {
def withNewThreadPoolWithCustomBlockingQueue(queue: BlockingQueue[Runnable]): ThreadPoolBuilder = synchronized {
ensureNotActive
verifyNotInConstructionPhase
inProcessOfBuilding = false
@ -52,7 +53,7 @@ trait ThreadPoolBuilder {
* <p/>
* The 'bound' variable should specify the number equal to the size of the thread pool PLUS the number of queued tasks that should be followed.
*/
def withNewThreadPoolWithBoundedBlockingQueue(bound: Int): ThreadPoolBuilder = synchronized {
def withNewBoundedThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity(bound: Int): ThreadPoolBuilder = synchronized {
ensureNotActive
verifyNotInConstructionPhase
blockingQueue = new LinkedBlockingQueue[Runnable]
@ -61,19 +62,19 @@ trait ThreadPoolBuilder {
this
}
def withNewThreadPoolWithLinkedBlockingQueueWithCapacity(capacity: Int): ThreadPoolBuilder = synchronized {
def withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity: ThreadPoolBuilder = synchronized {
ensureNotActive
verifyNotInConstructionPhase
blockingQueue = new LinkedBlockingQueue[Runnable](capacity)
blockingQueue = new LinkedBlockingQueue[Runnable]
threadPoolBuilder = new ThreadPoolExecutor(
NR_START_THREADS, NR_MAX_THREADS, KEEP_ALIVE_TIME, MILLISECONDS, blockingQueue, threadFactory, new CallerRunsPolicy)
this
}
def withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity: ThreadPoolBuilder = synchronized {
def withNewThreadPoolWithLinkedBlockingQueueWithCapacity(capacity: Int): ThreadPoolBuilder = synchronized {
ensureNotActive
verifyNotInConstructionPhase
blockingQueue = new LinkedBlockingQueue[Runnable]
blockingQueue = new LinkedBlockingQueue[Runnable](capacity)
threadPoolBuilder = new ThreadPoolExecutor(
NR_START_THREADS, NR_MAX_THREADS, KEEP_ALIVE_TIME, MILLISECONDS, blockingQueue, threadFactory, new CallerRunsPolicy)
this

View file

@ -1,29 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
import org.h2.compress.{LZFInputStream, LZFOutputStream}
import org.jboss.netty.channel.{Channel, ChannelHandlerContext, ChannelPipelineCoverage}
import org.jboss.netty.buffer.{ChannelBufferOutputStream, ChannelBufferInputStream, ChannelBuffer}
import org.jboss.netty.handler.codec.oneone.{OneToOneEncoder, OneToOneDecoder};
@ChannelPipelineCoverage("all")
class LzfDecoder extends OneToOneDecoder {
override protected def decode(ctx: ChannelHandlerContext, channel: Channel, message: AnyRef) = {
if (!(message.isInstanceOf[ChannelBuffer])) message
else {
new LZFInputStream(new ChannelBufferInputStream(message.asInstanceOf[ChannelBuffer]))
}
}
}
@ChannelPipelineCoverage("all")
class LzfEncoder extends OneToOneEncoder {
override protected def encode(ctx: ChannelHandlerContext, channel: Channel, message: AnyRef) = {
if (!(message.isInstanceOf[ChannelBuffer])) message
else new LZFOutputStream(new ChannelBufferOutputStream(message.asInstanceOf[ChannelBuffer]))
}
}

View file

@ -2,11 +2,11 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import scala.collection.mutable.HashMap
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply}
import se.scalablesolutions.akka.actor.{Exit, Actor}
import se.scalablesolutions.akka.dispatch.{DefaultCompletableFutureResult, CompletableFutureResult}
import se.scalablesolutions.akka.util.Logging
@ -102,8 +102,7 @@ class RemoteClient(hostname: String, port: Int) extends Logging {
connection.getChannel.getCloseFuture.awaitUninterruptibly
channelFactory.releaseExternalResources
}
timer.stop
timer.stop
}
def send(request: RemoteRequest): Option[CompletableFutureResult] = if (isRunning) {
@ -169,7 +168,7 @@ class RemoteClientHandler(val name: String,
val futures: ConcurrentMap[Long, CompletableFutureResult],
val supervisors: ConcurrentMap[String, Actor],
val bootstrap: ClientBootstrap,
val timer: HashedWheelTimer)
val timer: HashedWheelTimer)
extends SimpleChannelUpstreamHandler with Logging {
import Actor.Sender.Self

View file

@ -2,11 +2,11 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import se.scalablesolutions.akka.serialization.Serializable.SBinary
import se.scalablesolutions.akka.serialization.{Serializer, Serializable, SerializationProtocol}
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply}
import com.google.protobuf.{Message, ByteString}

View file

@ -2,7 +2,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import java.lang.reflect.InvocationTargetException
import java.net.InetSocketAddress
@ -10,7 +10,7 @@ import java.util.concurrent.{ConcurrentHashMap, Executors}
import se.scalablesolutions.akka.actor._
import se.scalablesolutions.akka.util._
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.{RemoteReply, RemoteRequest}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.{RemoteReply, RemoteRequest}
import se.scalablesolutions.akka.Config.config
import org.jboss.netty.bootstrap.ServerBootstrap
@ -25,14 +25,19 @@ import org.jboss.netty.handler.codec.compression.{ZlibEncoder, ZlibDecoder}
* Use this object if you need a single remote server on a specific node.
*
* <pre>
* // takes hostname and port from 'akka.conf'
* RemoteNode.start
* </pre>
*
* <pre>
* RemoteNode.start(hostname, port)
* </pre>
*
* If you need to create more than one, then you can use the RemoteServer:
*
* <pre>
* val server = new RemoteServer
* server.start
* server.start(hostname, port)
* </pre>
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
@ -201,8 +206,7 @@ class RemoteServerHandler(val name: String, openChannels: ChannelGroup, val appl
private def dispatchToActor(request: RemoteRequest, channel: Channel) = {
log.debug("Dispatching to remote actor [%s]", request.getTarget)
val actor = createActor(request.getTarget, request.getUuid, request.getTimeout)
actor.start
val message = RemoteProtocolBuilder.getMessage(request)
if (request.getIsOneWay) {
if (request.hasSourceHostname && request.hasSourcePort) {
@ -360,6 +364,7 @@ class RemoteServerHandler(val name: String, openChannels: ChannelGroup, val appl
newInstance.timeout = timeout
newInstance._remoteAddress = None
actors.put(uuid, newInstance)
newInstance.start
newInstance
} catch {
case e =>

View file

@ -2,7 +2,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import java.util.concurrent.atomic.AtomicLong
import stm.Transaction

View file

@ -0,0 +1,21 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.serialization
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object Compression {
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object LZF {
import voldemort.store.compress.lzf._
def compress(bytes: Array[Byte]): Array[Byte] = LZFEncoder.encode(bytes)
def uncompress(bytes: Array[Byte]): Array[Byte] = LZFDecoder.decode(bytes)
}
}

View file

@ -10,7 +10,7 @@ import com.google.protobuf.Message
import org.codehaus.jackson.map.ObjectMapper
import sjson.json.{Serializer =>SJSONSerializer}
import sjson.json.{Serializer => SJSONSerializer}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>

View file

@ -6,7 +6,7 @@ import junit.framework.TestCase
import org.scalatest.junit.JUnitSuite
import org.junit.{Test, Before, After}
import se.scalablesolutions.akka.nio.{RemoteServer, RemoteClient}
import se.scalablesolutions.akka.remote.{RemoteServer, RemoteClient}
import se.scalablesolutions.akka.dispatch.Dispatchers
object Global {

View file

@ -6,7 +6,7 @@ package se.scalablesolutions.akka.actor
import se.scalablesolutions.akka.serialization.BinaryString
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.nio.{RemoteNode, RemoteServer}
import se.scalablesolutions.akka.remote.{RemoteNode, RemoteServer}
import se.scalablesolutions.akka.OneWay
import se.scalablesolutions.akka.dispatch.Dispatchers

View file

@ -7,7 +7,8 @@ package se.scalablesolutions.akka.amqp
import com.rabbitmq.client.{AMQP => RabbitMQ, _}
import com.rabbitmq.client.ConnectionFactory
import se.scalablesolutions.akka.actor.{OneForOneStrategy, Actor}
import se.scalablesolutions.akka.actor.Actor
import se.scalablesolutions.akka.config.OneForOneStrategy
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.util.{HashCode, Logging}

View file

@ -1,48 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>akka-camel</artifactId>
<name>Akka Camel Module</name>
<packaging>jar</packaging>
<parent>
<artifactId>akka</artifactId>
<groupId>se.scalablesolutions.akka</groupId>
<version>0.6</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!-- Core deps -->
<dependencies>
<dependency>
<artifactId>akka-util</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>akka-actors</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<includes>
<include>META-INF/*</include>
</includes>
</resource>
</resources>
</build>
</project>

View file

@ -1 +0,0 @@
class=se.scalablesolutions.akka.kernel.camel.ActiveObjectComponent

View file

@ -1,23 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import config.ActiveObjectConfigurator
import java.util.Map
import java.util.concurrent.{BlockingQueue, LinkedBlockingQueue}
import org.apache.camel.{Endpoint, Exchange}
import org.apache.camel.impl.DefaultComponent
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectComponent(val conf: ActiveObjectConfigurator) extends DefaultComponent {
override def createEndpoint(uri: String, remaining: String, parameters: Map[_,_]): Endpoint = {
//val consumers = getAndRemoveParameter(parameters, "concurrentConsumers", classOf[Int], 1)
new ActiveObjectEndpoint(uri, this, conf)
}
}

View file

@ -1,36 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import java.util.concurrent.{BlockingQueue, ExecutorService, Executors, ThreadFactory, TimeUnit}
import util.Logging
import org.apache.camel.{AsyncCallback, AsyncProcessor, Consumer, Exchange, Processor}
import org.apache.camel.impl.ServiceSupport
import org.apache.camel.impl.converter.AsyncProcessorTypeConverter
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectConsumer(
val endpoint: ActiveObjectEndpoint,
proc: Processor,
val activeObject: AnyRef)
extends ServiceSupport with Consumer with Runnable with Logging {
val processor = AsyncProcessorTypeConverter.convert(proc)
println("------- creating consumer for: "+ endpoint.uri)
override def run = {
}
def doStart() = {
}
def doStop() = {
}
override def toString(): String = "ActiveObjectConsumer [" + endpoint.getEndpointUri + "]"
}

View file

@ -1,48 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import config.ActiveObjectConfigurator
import util.Logging
import java.util.{ArrayList, HashSet, List, Set}
import java.util.concurrent.{BlockingQueue, CopyOnWriteArraySet, LinkedBlockingQueue}
import org.apache.camel.{Component, Consumer, Exchange, Processor, Producer}
import org.apache.camel.impl.{DefaultEndpoint, DefaultComponent};
import org.apache.camel.spi.BrowsableEndpoint;
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectEndpoint(val uri: String, val component: DefaultComponent, val conf: ActiveObjectConfigurator) // FIXME: need abstraction trait here
extends DefaultEndpoint(uri) with BrowsableEndpoint with Logging {
val firstSep = uri.indexOf(':')
val lastSep = uri.lastIndexOf( '.')
val scheme = uri.substring(0, firstSep)
val activeObjectName = uri.substring(uri.indexOf(':') + 1, lastSep)
val activeObjectClass = Thread.currentThread.getContextClassLoader.loadClass(activeObjectName)
val methodName = uri.substring(lastSep + 1, uri.length)
val activeObject = conf.getInstance(activeObjectClass).asInstanceOf[MessageDriven]
// val activeObjectProxy = conf.getInstanceProxy(activeObjectName)
// val genericServer = supervisor.getServerOrElse(
// activeObjectName,
// throw new IllegalArgumentException("Can't find active object with name [" + activeObjectName + "] and method [" + methodName + "]"))
log.debug("Creating Camel Endpoint for scheme [%s] and component [%s]", scheme, activeObjectName)
private var queue: BlockingQueue[Exchange] = new LinkedBlockingQueue[Exchange](1000)
override def createProducer: Producer = new ActiveObjectProducer(this, activeObject)
override def createConsumer(processor: Processor): Consumer = new ActiveObjectConsumer(this, processor, activeObject)
override def getExchanges: List[Exchange] = new ArrayList[Exchange](queue)
override def isSingleton = true
}

View file

@ -1,42 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import java.util.Collection
import util.Logging;
import java.util.concurrent.BlockingQueue;
import org.apache.camel.{Exchange, AsyncProcessor, AsyncCallback}
import org.apache.camel.impl.DefaultProducer
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectProducer(
val endpoint: ActiveObjectEndpoint,
val activeObject: MessageDriven)
extends DefaultProducer(endpoint) with AsyncProcessor with Logging {
private val actorName = endpoint.activeObjectName
def process(exchange: Exchange) = activeObject.onMessage(exchange) // FIXME: should we not invoke the generic server here?
def process(exchange: Exchange, callback: AsyncCallback): Boolean = {
val copy = exchange.copy
copy.setProperty("CamelAsyncCallback", callback)
activeObject.onMessage(copy)
callback.done(true)
true
}
override def doStart = {
super.doStart
}
override def doStop = {
super.doStop
}
override def toString(): String = "ActiveObjectProducer [" + endpoint.getEndpointUri + "]"
}

View file

@ -1,35 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.config
import org.apache.camel.{Routes, CamelContext, Endpoint}
trait CamelConfigurator {
/**
* Add Camel routes for the active objects.
* <pre>
* activeObjectConfigurator.addRoutes(new RouteBuilder() {
* def configure = {
* from("akka:actor1").to("akka:actor2")
* from("akka:actor2").process(new Processor() {
* def process(e: Exchange) = {
* println("Received exchange: " + e.getIn())
* }
* })
* }
* }).inject().supervise();
* </pre>
*/
def addRoutes(routes: Routes): ActiveObjectConfiguratorBase
def getCamelContext: CamelContext
def getRoutingEndpoint(uri: String): Endpoint
def getRoutingEndpoints: java.util.Collection[Endpoint]
def getRoutingEndpoints(uri: String): java.util.Collection[Endpoint]
}

View file

@ -1,14 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import org.apache.camel.Exchange
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait MessageDriven {
def onMessage(exchange: Exchange)
}

View file

@ -1,16 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
import actor.Supervisor
import util.Logging
import org.apache.camel.impl.{DefaultCamelContext, DefaultEndpoint, DefaultComponent}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class SupervisorAwareCamelContext extends DefaultCamelContext with Logging {
var supervisor: Supervisor = _
}

View file

@ -1,101 +0,0 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.camel
/*
import config.ActiveObjectGuiceConfigurator
import annotation.oneway
import config.ScalaConfig._
import com.google.inject.{AbstractModule, Scopes}
//import com.jteigen.scalatest.JUnit4Runner
import org.apache.camel.component.bean.ProxyHelper
import org.junit.runner.RunWith
import org.scalatest._
import org.scalatest.matchers._
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext
import org.apache.camel.Endpoint
import org.apache.camel.Exchange
import org.apache.camel.Processor
import org.apache.camel.Producer
import org.apache.camel.builder.RouteBuilder
import org.apache.camel.impl.DefaultCamelContext
// REQUIRES: -Djava.naming.factory.initial=org.apache.camel.util.jndi.CamelInitialContextFactory
*/
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*
//@RunWith(classOf[JUnit4Runner])
class CamelSpec extends Spec with ShouldMatchers {
describe("A Camel routing scheme") {
it("should route message from direct:test to actor A using @Bean endpoint") {
val latch = new CountDownLatch(1);
val conf = new ActiveObjectGuiceConfigurator
conf.configure(
RestartStrategy(AllForOne, 3, 5000),
Component(
"camelfoo",
classOf[CamelFoo],
classOf[CamelFooImpl],
LifeCycle(Permanent),
1000) ::
Nil
).addRoutes(new RouteBuilder() {
def configure = {
from("direct:test").to("bean:camelfoo").process(new Processor() {
def process(e: Exchange) = {
println("Received exchange: " + e.getIn())
latch.countDown
}
})
}}
).supervise
val endpoint = conf.getRoutingEndpoint("direct:test")
val proxy = ProxyHelper.createProxy(endpoint, classOf[CamelFoo])
proxy.foo("hello there")
val exchange = endpoint.createExchange
println("----- " + exchange)
exchange.getIn().setBody("hello there")
val producer = endpoint.createProducer
println("----- " + producer)
producer.process(exchange)
// now lets sleep for a while
val received = latch.await(5, TimeUnit.SECONDS)
received should equal (true)
conf.stop
}
}
}
trait CamelFoo {
@oneway def foo(msg: String)
}
trait CamelBar {
def bar(msg: String): String
}
class CamelFooImpl extends CamelFoo {
def foo(msg: String) = println("CamelFoo.foo:" + msg)
}
class CamelBarImpl extends CamelBar {
def bar(msg: String) = msg + "return_bar "
}
*/

View file

@ -7,7 +7,7 @@ package se.scalablesolutions.akka.api;
import se.scalablesolutions.akka.Config;
import se.scalablesolutions.akka.actor.ActiveObject;
import se.scalablesolutions.akka.config.ActiveObjectConfigurator;
import se.scalablesolutions.akka.nio.RemoteNode;
import se.scalablesolutions.akka.remote.RemoteNode;
import junit.framework.TestCase;

View file

@ -37,11 +37,6 @@
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>akka-camel</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>akka-security</artifactId>
<groupId>${project.groupId}</groupId>

View file

@ -12,7 +12,7 @@ import javax.ws.rs.core.UriBuilder
import java.io.File
import java.net.URLClassLoader
import se.scalablesolutions.akka.nio.RemoteNode
import se.scalablesolutions.akka.remote.RemoteNode
import se.scalablesolutions.akka.util.Logging
import se.scalablesolutions.akka.actor.ActorRegistry

View file

@ -28,9 +28,9 @@
<!-- For Mongo -->
<dependency>
<groupId>com.mongodb</groupId>
<artifactId>mongo</artifactId>
<version>1.0</version>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>1.1</version>
</dependency>
<!-- For Cassandra -->

View file

@ -1,6 +1,6 @@
package sample.lift
import se.scalablesolutions.akka.actor.Actor
import se.scalablesolutions.akka.actor.{Transactor, Actor}
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.state.{CassandraStorage, TransactionalState}
@ -8,7 +8,6 @@ import java.lang.Integer
import javax.ws.rs.{GET, Path, Produces}
import java.nio.ByteBuffer
/**
* Try service out by invoking (multiple times):
* <pre>
@ -17,9 +16,7 @@ import java.nio.ByteBuffer
* Or browse to the URL from a web browser.
*/
@Path("/liftcount")
class SimpleService extends Actor {
makeTransactionRequired
class SimpleService extends Transactor {
case object Tick
private val KEY = "COUNTER"
private var hasStartedTicking = false

View file

@ -4,7 +4,7 @@
package sample.scala
import se.scalablesolutions.akka.actor.{SupervisorFactory, Actor}
import se.scalablesolutions.akka.actor.{Transactor, SupervisorFactory, Actor}
import se.scalablesolutions.akka.state.{CassandraStorage, TransactionalState}
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.util.Logging
@ -32,32 +32,13 @@ class Boot {
Supervise(
new PersistentSimpleService,
LifeCycle(Permanent)) ::
Supervise(
Supervise(
new PubSub,
LifeCycle(Permanent))
:: Nil))
factory.newInstance.start
}
@Path("/pubsub/")
class PubSub extends Actor {
case class Msg(topic: String, message: String)
@GET
@Suspend
@Produces(Array("text/plain;charset=ISO-8859-1"))
@Path("/topic/{topic}/")
def subscribe(@PathParam("topic") topic: Broadcaster): Broadcastable = new Broadcastable("", topic)
@GET
@Broadcast
@Path("/topic/{topic}/{message}/")
@Produces(Array("text/plain;charset=ISO-8859-1"))
def say(@PathParam("topic") topic: Broadcaster, @PathParam("message") message: String): Broadcastable = new Broadcastable(message, topic)
override def receive = { case _ => }
}
/**
* Try service out by invoking (multiple times):
* <pre>
@ -66,9 +47,8 @@ class PubSub extends Actor {
* Or browse to the URL from a web browser.
*/
@Path("/scalacount")
class SimpleService extends Actor {
makeTransactionRequired
class SimpleService extends Transactor {
case object Tick
private val KEY = "COUNTER"
private var hasStartedTicking = false
@ -91,6 +71,24 @@ class SimpleService extends Actor {
}
}
@Path("/pubsub/")
class PubSub extends Actor {
case class Msg(topic: String, message: String)
@GET
@Suspend
@Produces(Array("text/plain;charset=ISO-8859-1"))
@Path("/topic/{topic}/")
def subscribe(@PathParam("topic") topic: Broadcaster): Broadcastable = new Broadcastable("", topic)
@GET
@Broadcast
@Path("/topic/{topic}/{message}/")
@Produces(Array("text/plain;charset=ISO-8859-1"))
def say(@PathParam("topic") topic: Broadcaster, @PathParam("message") message: String): Broadcastable = new Broadcastable(message, topic)
def receive = { case _ => }
}
/**
* Try service out by invoking (multiple times):
* <pre>
@ -126,9 +124,7 @@ class PersistentSimpleService extends Actor {
}
@Path("/chat")
class Chat extends Actor with Logging {
makeTransactionRequired
class Chat extends Transactor {
case class Chat(val who: String, val what: String, val msg: String)
@Suspend

View file

@ -1,6 +1,6 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
package se.scalablesolutions.akka.nio.protobuf;
package se.scalablesolutions.akka.remote.protobuf;
public final class RemoteProtocol {
private RemoteProtocol() {}
@ -23,12 +23,12 @@ public final class RemoteProtocol {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_descriptor;
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_fieldAccessorTable;
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_fieldAccessorTable;
}
// required uint64 id = 1;
@ -284,57 +284,57 @@ public final class RemoteProtocol {
return size;
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(byte[] data)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(java.io.InputStream input)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseDelimitedFrom(java.io.InputStream input)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeDelimitedFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseDelimitedFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
@ -344,25 +344,25 @@ public final class RemoteProtocol {
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest prototype) {
public static Builder newBuilder(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder> {
private se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest result;
private se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest result;
// Construct using se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.newBuilder()
// Construct using se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.newBuilder()
private Builder() {}
private static Builder create() {
Builder builder = new Builder();
builder.result = new se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest();
builder.result = new se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest();
return builder;
}
protected se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest internalGetResult() {
protected se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest internalGetResult() {
return result;
}
@ -371,7 +371,7 @@ public final class RemoteProtocol {
throw new IllegalStateException(
"Cannot call clear() after build().");
}
result = new se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest();
result = new se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest();
return this;
}
@ -381,24 +381,24 @@ public final class RemoteProtocol {
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.getDescriptor();
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.getDescriptor();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest getDefaultInstanceForType() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.getDefaultInstance();
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest getDefaultInstanceForType() {
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.getDefaultInstance();
}
public boolean isInitialized() {
return result.isInitialized();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest build() {
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest build() {
if (result != null && !isInitialized()) {
throw newUninitializedMessageException(result);
}
return buildPartial();
}
private se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest buildParsed()
private se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
if (!isInitialized()) {
throw newUninitializedMessageException(
@ -407,27 +407,27 @@ public final class RemoteProtocol {
return buildPartial();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest buildPartial() {
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest buildPartial() {
if (result == null) {
throw new IllegalStateException(
"build() has already been called on this Builder.");
}
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest returnMe = result;
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest returnMe = result;
result = null;
return returnMe;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest) {
return mergeFrom((se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest)other);
if (other instanceof se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest) {
return mergeFrom((se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest other) {
if (other == se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.getDefaultInstance()) return this;
public Builder mergeFrom(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest other) {
if (other == se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.getDefaultInstance()) return this;
if (other.hasId()) {
setId(other.getId());
}
@ -887,11 +887,11 @@ public final class RemoteProtocol {
}
static {
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.getDescriptor();
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.getDescriptor();
}
static {
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internalForceInit();
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internalForceInit();
}
}
@ -911,12 +911,12 @@ public final class RemoteProtocol {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_descriptor;
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_fieldAccessorTable;
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_fieldAccessorTable;
}
// required uint64 id = 1;
@ -1054,57 +1054,57 @@ public final class RemoteProtocol {
return size;
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(byte[] data)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(java.io.InputStream input)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseDelimitedFrom(java.io.InputStream input)
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeDelimitedFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseDelimitedFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
.buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply parseFrom(
public static se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
@ -1114,25 +1114,25 @@ public final class RemoteProtocol {
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply prototype) {
public static Builder newBuilder(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder> {
private se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply result;
private se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply result;
// Construct using se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.newBuilder()
// Construct using se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.newBuilder()
private Builder() {}
private static Builder create() {
Builder builder = new Builder();
builder.result = new se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply();
builder.result = new se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply();
return builder;
}
protected se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply internalGetResult() {
protected se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply internalGetResult() {
return result;
}
@ -1141,7 +1141,7 @@ public final class RemoteProtocol {
throw new IllegalStateException(
"Cannot call clear() after build().");
}
result = new se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply();
result = new se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply();
return this;
}
@ -1151,24 +1151,24 @@ public final class RemoteProtocol {
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.getDescriptor();
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.getDescriptor();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply getDefaultInstanceForType() {
return se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.getDefaultInstance();
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply getDefaultInstanceForType() {
return se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.getDefaultInstance();
}
public boolean isInitialized() {
return result.isInitialized();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply build() {
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply build() {
if (result != null && !isInitialized()) {
throw newUninitializedMessageException(result);
}
return buildPartial();
}
private se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply buildParsed()
private se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
if (!isInitialized()) {
throw newUninitializedMessageException(
@ -1177,27 +1177,27 @@ public final class RemoteProtocol {
return buildPartial();
}
public se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply buildPartial() {
public se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply buildPartial() {
if (result == null) {
throw new IllegalStateException(
"build() has already been called on this Builder.");
}
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply returnMe = result;
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply returnMe = result;
result = null;
return returnMe;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply) {
return mergeFrom((se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply)other);
if (other instanceof se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply) {
return mergeFrom((se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply other) {
if (other == se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.getDefaultInstance()) return this;
public Builder mergeFrom(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply other) {
if (other == se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.getDefaultInstance()) return this;
if (other.hasId()) {
setId(other.getId());
}
@ -1442,24 +1442,24 @@ public final class RemoteProtocol {
}
static {
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.getDescriptor();
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.getDescriptor();
}
static {
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.internalForceInit();
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.internalForceInit();
}
}
private static com.google.protobuf.Descriptors.Descriptor
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_descriptor;
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_fieldAccessorTable;
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_descriptor;
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_fieldAccessorTable;
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
@ -1469,43 +1469,43 @@ public final class RemoteProtocol {
descriptor;
static {
java.lang.String[] descriptorData = {
"\n;se/scalablesolutions/akka/nio/protobuf" +
"/RemoteProtocol.proto\022&se.scalablesoluti" +
"ons.akka.nio.protobuf\"\272\002\n\rRemoteRequest\022" +
"\n\n\002id\030\001 \002(\004\022\020\n\010protocol\030\002 \002(\r\022\017\n\007message" +
"\030\003 \002(\014\022\027\n\017messageManifest\030\004 \001(\014\022\016\n\006metho" +
"d\030\005 \001(\t\022\016\n\006target\030\006 \002(\t\022\014\n\004uuid\030\007 \002(\t\022\017\n" +
"\007timeout\030\010 \002(\004\022\026\n\016supervisorUuid\030\t \001(\t\022\017" +
"\n\007isActor\030\n \002(\010\022\020\n\010isOneWay\030\013 \002(\010\022\021\n\tisE" +
"scaped\030\014 \002(\010\022\026\n\016sourceHostname\030\r \001(\t\022\022\n\n" +
"sourcePort\030\016 \001(\r\022\024\n\014sourceTarget\030\017 \001(\t\022\022",
"\n\nsourceUuid\030\020 \001(\t\"\247\001\n\013RemoteReply\022\n\n\002id" +
"\030\001 \002(\004\022\020\n\010protocol\030\002 \001(\r\022\017\n\007message\030\003 \001(" +
"\014\022\027\n\017messageManifest\030\004 \001(\014\022\021\n\texception\030" +
"\005 \001(\t\022\026\n\016supervisorUuid\030\006 \001(\t\022\017\n\007isActor" +
"\030\007 \002(\010\022\024\n\014isSuccessful\030\010 \002(\010"
"\n>se/scalablesolutions/akka/remote/proto" +
"buf/RemoteProtocol.proto\022)se.scalablesol" +
"utions.akka.remote.protobuf\"\272\002\n\rRemoteRe" +
"quest\022\n\n\002id\030\001 \002(\004\022\020\n\010protocol\030\002 \002(\r\022\017\n\007m" +
"essage\030\003 \002(\014\022\027\n\017messageManifest\030\004 \001(\014\022\016\n" +
"\006method\030\005 \001(\t\022\016\n\006target\030\006 \002(\t\022\014\n\004uuid\030\007 " +
"\002(\t\022\017\n\007timeout\030\010 \002(\004\022\026\n\016supervisorUuid\030\t" +
" \001(\t\022\017\n\007isActor\030\n \002(\010\022\020\n\010isOneWay\030\013 \002(\010\022" +
"\021\n\tisEscaped\030\014 \002(\010\022\026\n\016sourceHostname\030\r \001" +
"(\t\022\022\n\nsourcePort\030\016 \001(\r\022\024\n\014sourceTarget\030\017",
" \001(\t\022\022\n\nsourceUuid\030\020 \001(\t\"\247\001\n\013RemoteReply" +
"\022\n\n\002id\030\001 \002(\004\022\020\n\010protocol\030\002 \001(\r\022\017\n\007messag" +
"e\030\003 \001(\014\022\027\n\017messageManifest\030\004 \001(\014\022\021\n\texce" +
"ption\030\005 \001(\t\022\026\n\016supervisorUuid\030\006 \001(\t\022\017\n\007i" +
"sActor\030\007 \002(\010\022\024\n\014isSuccessful\030\010 \002(\010"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
public com.google.protobuf.ExtensionRegistry assignDescriptors(
com.google.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_descriptor =
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_fieldAccessorTable = new
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteRequest_descriptor,
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteRequest_descriptor,
new java.lang.String[] { "Id", "Protocol", "Message", "MessageManifest", "Method", "Target", "Uuid", "Timeout", "SupervisorUuid", "IsActor", "IsOneWay", "IsEscaped", "SourceHostname", "SourcePort", "SourceTarget", "SourceUuid", },
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.class,
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.Builder.class);
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_descriptor =
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.class,
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.Builder.class);
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_fieldAccessorTable = new
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_se_scalablesolutions_akka_nio_protobuf_RemoteReply_descriptor,
internal_static_se_scalablesolutions_akka_remote_protobuf_RemoteReply_descriptor,
new java.lang.String[] { "Id", "Protocol", "Message", "MessageManifest", "Exception", "SupervisorUuid", "IsActor", "IsSuccessful", },
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.class,
se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.Builder.class);
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.class,
se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.Builder.class);
return null;
}
};

View file

@ -2,12 +2,12 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio.protobuf;
package se.scalablesolutions.akka.remote.protobuf;
/*
Compile with:
cd ./akka-util-java/src/main/java
protoc se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.proto --java_out .
protoc se/scalablesolutions/akka/remote/protobuf/RemoteProtocol.proto --java_out .
*/
message RemoteRequest {

View file

@ -15,8 +15,8 @@ package se.scalablesolutions.akka.actor
import java.net.InetSocketAddress
import se.scalablesolutions.akka.dispatch.{MessageDispatcher, FutureResult}
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.nio.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.remote.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.util._

View file

@ -21,8 +21,8 @@ import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.stm.Transaction._
import se.scalablesolutions.akka.stm.TransactionManagement._
import se.scalablesolutions.akka.stm.{StmException, TransactionManagement}
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.nio.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest
import se.scalablesolutions.akka.remote.{RemoteProtocolBuilder, RemoteClient, RemoteRequestIdFactory}
import se.scalablesolutions.akka.serialization.Serializer
import se.scalablesolutions.akka.util.Helpers.ReadWriteLock
import se.scalablesolutions.akka.util.Logging

File diff suppressed because one or more lines are too long

View file

@ -10,7 +10,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import scala.collection.mutable.HashMap

View file

@ -10,7 +10,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import akka.serialization.Serializable.SBinary
import com.google.protobuf.{Message, ByteString}

View file

@ -10,7 +10,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import java.lang.reflect.InvocationTargetException
import java.net.InetSocketAddress
@ -18,7 +18,7 @@ import java.util.concurrent.{ConcurrentHashMap, Executors}
import se.scalablesolutions.akka.actor._
import se.scalablesolutions.akka.util._
import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.{RemoteReply, RemoteRequest}
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.{RemoteReply, RemoteRequest}
import se.scalablesolutions.akka.Config.config
import org.jboss.netty.bootstrap.ServerBootstrap

View file

@ -10,7 +10,7 @@
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.nio
package se.scalablesolutions.akka.remote
import java.util.concurrent.atomic.AtomicLong
import stm.Transaction

View file

@ -64,7 +64,7 @@
</dd>
<dt><a href="javascript:selectPackage('se.scalablesolutions.akka.nio')">se.scalablesolutions.akka.nio</a></dt>
<dt><a href="javascript:selectPackage('se.scalablesolutions.akka.remote')">se.scalablesolutions.akka.remote</a></dt>
<dd>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteClient</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteClient</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteClient</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteClient</span>
<br></br>
object RemoteClient
</h2>
@ -59,7 +59,7 @@
</dl>
</div>
<br></br>
Companion: <a href="./RemoteClient.html" title="se.scalablesolutions.akka.nio.RemoteClient" >RemoteClient</a><br></br>
Companion: <a href="./RemoteClient.html" title="se.scalablesolutions.akka.remote.RemoteClient" >RemoteClient</a><br></br>
Source: <a href="./../../../../nio/RemoteClient.scala.html#Some(29)">RemoteClient.scala(29)</a>
</div>
@ -213,7 +213,7 @@
</td>
<td class="type"><a href="./RemoteClient.html" title="se.scalablesolutions.akka.nio.RemoteClient" >RemoteClient</a></td>
<td class="type"><a href="./RemoteClient.html" title="se.scalablesolutions.akka.remote.RemoteClient" >RemoteClient</a></td>
<td class="remarks">
@ -440,7 +440,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteClient</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteClient</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteClient</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteClient</span>
<br></br>
class RemoteClient
</h2>
@ -59,7 +59,7 @@
</dl>
</div>
<br></br>
Companion: <a href="./RemoteClient$object.html" title="se.scalablesolutions.akka.nio.RemoteClient" >RemoteClient</a><br></br>
Companion: <a href="./RemoteClient$object.html" title="se.scalablesolutions.akka.remote.RemoteClient" >RemoteClient</a><br></br>
Source: <a href="./../../../../nio/RemoteClient.scala.html#Some(54)">RemoteClient.scala(54)</a>
</div>
@ -388,10 +388,10 @@
</td>
</tr><tr class="">
<td class="name">
<b>send</b>..<a name="send(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest)"></a>
<b>send</b>..<a name="send(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest)"></a>
</td>
<td class="signature">
<code class="signature">def send(request : <a href="./protobuf/RemoteProtocol/RemoteRequest.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest" >RemoteRequest</a>)</code>
<code class="signature">def send(request : <a href="./protobuf/RemoteProtocol/RemoteRequest.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest" >RemoteRequest</a>)</code>
</td>
@ -496,7 +496,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteClientHandler</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteClientHandler</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteClientHandler</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteClientHandler</span>
<br></br>
class RemoteClientHandler
</h2>
@ -580,7 +580,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteClientPipelineFactory</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteClientPipelineFactory</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteClientPipelineFactory</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteClientPipelineFactory</span>
<br></br>
class RemoteClientPipelineFactory
</h2>
@ -390,7 +390,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteProtocolBuilder</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteProtocolBuilder</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteProtocolBuilder</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteProtocolBuilder</span>
<br></br>
object RemoteProtocolBuilder
</h2>
@ -224,10 +224,10 @@
</td>
</tr><tr class="">
<td class="name">
<b>getMessage</b>..<a name="getMessage(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply)"></a>
<b>getMessage</b>..<a name="getMessage(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply)"></a>
</td>
<td class="signature">
<code class="signature">def getMessage(reply : <a href="./protobuf/RemoteProtocol/RemoteReply.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply" >RemoteReply</a>)</code>
<code class="signature">def getMessage(reply : <a href="./protobuf/RemoteProtocol/RemoteReply.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply" >RemoteReply</a>)</code>
</td>
@ -238,10 +238,10 @@
</td>
</tr><tr class="">
<td class="name">
<b>getMessage</b>..<a name="getMessage(se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest)"></a>
<b>getMessage</b>..<a name="getMessage(se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest)"></a>
</td>
<td class="signature">
<code class="signature">def getMessage(request : <a href="./protobuf/RemoteProtocol/RemoteRequest.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest" >RemoteRequest</a>)</code>
<code class="signature">def getMessage(request : <a href="./protobuf/RemoteProtocol/RemoteRequest.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest" >RemoteRequest</a>)</code>
</td>
@ -322,28 +322,28 @@
</td>
</tr><tr class="">
<td class="name">
<b>setMessage</b>..<a name="setMessage(java.lang.Object,se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.Builder)"></a>
<b>setMessage</b>..<a name="setMessage(java.lang.Object,se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.Builder)"></a>
</td>
<td class="signature">
<code class="signature">def setMessage(message : <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html" title="java.lang.Object" >Object</a>, builder : <a href="./protobuf/RemoteProtocol/RemoteReply/Builder.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.Builder" >Builder</a>)</code>
<code class="signature">def setMessage(message : <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html" title="java.lang.Object" >Object</a>, builder : <a href="./protobuf/RemoteProtocol/RemoteReply/Builder.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.Builder" >Builder</a>)</code>
</td>
<td class="type"><a href="./protobuf/RemoteProtocol/RemoteReply/Builder.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteReply.Builder" >Builder</a></td>
<td class="type"><a href="./protobuf/RemoteProtocol/RemoteReply/Builder.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteReply.Builder" >Builder</a></td>
<td class="remarks">
</td>
</tr><tr class="">
<td class="name">
<b>setMessage</b>..<a name="setMessage(java.lang.Object,se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.Builder)"></a>
<b>setMessage</b>..<a name="setMessage(java.lang.Object,se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.Builder)"></a>
</td>
<td class="signature">
<code class="signature">def setMessage(message : <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html" title="java.lang.Object" >Object</a>, builder : <a href="./protobuf/RemoteProtocol/RemoteRequest/Builder.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.Builder" >Builder</a>)</code>
<code class="signature">def setMessage(message : <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html" title="java.lang.Object" >Object</a>, builder : <a href="./protobuf/RemoteProtocol/RemoteRequest/Builder.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.Builder" >Builder</a>)</code>
</td>
<td class="type"><a href="./protobuf/RemoteProtocol/RemoteRequest/Builder.html" title="se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.RemoteRequest.Builder" >Builder</a></td>
<td class="type"><a href="./protobuf/RemoteProtocol/RemoteRequest/Builder.html" title="se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.RemoteRequest.Builder" >Builder</a></td>
<td class="remarks">
@ -430,7 +430,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteRequestIdFactory</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteRequestIdFactory</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteRequestIdFactory</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteRequestIdFactory</span>
<br></br>
object RemoteRequestIdFactory
</h2>
@ -392,7 +392,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteServer</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteServer</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteServer</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteServer</span>
<br></br>
object RemoteServer
</h2>
@ -510,7 +510,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteServerHandler</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteServerHandler</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteServerHandler</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteServerHandler</span>
<br></br>
class RemoteServerHandler
</h2>
@ -580,7 +580,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.nio.RemoteServerPipelineFactory</title>
<title>Akka Actors Module 0.6 API : se.scalablesolutions.akka.remote.RemoteServerPipelineFactory</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
<meta content="scaladoc (1.2)" name="generator"></meta>
<script type="text/javascript" src="./../../../../jquery-1.3.2.js"></script>
@ -23,7 +23,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>
@ -40,7 +40,7 @@
<!-- ======== START OF CLASS DATA ======== -->
<h2>
<span style="font-size:80%">se.scalablesolutions.akka.nio.RemoteServerPipelineFactory</span>
<span style="font-size:80%">se.scalablesolutions.akka.remote.RemoteServerPipelineFactory</span>
<br></br>
class RemoteServerPipelineFactory
</h2>
@ -390,7 +390,7 @@
<tr>
<td class="NavBarCell1">
<a href="./../../../../overview.html">OVERVIEW</a>&nbsp;|&nbsp;
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.nio" >PACKAGE</a> |
<a href="./../../../../overview.html" title="se.scalablesolutions.akka.remote" >PACKAGE</a> |
<a href="#Constructors">CONSTR</a>&nbsp;|&nbsp;
<a href="#Fields">FIELDS</a>&nbsp;|&nbsp;
<a href="#Methods">METHODS</a>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>jar</packaging>
</project>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache</groupId>
<artifactId>zookeeper</artifactId>
<version>3.1.0</version>
<packaging>jar</packaging>
</project>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.1.0</version>
<packaging>jar</packaging>
</project>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.1.0</version>
<packaging>jar</packaging>
</project>

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>high-scale-lib</groupId>
<artifactId>high-scale-lib</artifactId>
<groupId>voldemort.store.compress</groupId>
<artifactId>h2-lzf</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
</project>

27
pom.xml
View file

@ -13,12 +13,26 @@
<packaging>pom</packaging>
<description>
Akka implements a unique hybrid of the Actor model and Software Transactional Memory (STM).
Akka gives you you:
* Concurrency (high-level and simple).
* Asynchronous, non-blocking, event-driven and highly performant components.
* Scalability through very performant remote actors.
* Fault-tolerance through supervision hierarchies with “let-it-crash” semantics.
Akka implements a unique hybrid of:
* Actors , which gives you:
* Simple and high-level abstractions for concurrency and parallelism.
* Asynchronous, non-blocking and highly performant event-driven programming model.
* Very lightweight event-driven processes (create ~6.5 million actors on 4 G RAM).
* Supervision hierarchies with let-it-crash semantics. For writing highly fault-tolerant systems that never stops, systems that self-heals.
* Software Transactional Memory (STM). (Distributed transactions coming soon).
* Transactors: combine actors and STM into transactional actors. Allows you to compose atomic message flows with automatic rollback and retry.
* Remoting: highly performant distributed actors with remote supervision and error management.
* Cluster membership management.
Akka also has a set of add-on modules:
* Persistence: A set of pluggable back-end storage modules that works in sync with the STM.
* Cassandra distributed and highly scalable database.
* MongoDB document database.
* Redis data structures database (upcoming)
* REST (JAX-RS): Expose actors as REST services.
* Comet: Expose actors as Comet services.
* Security: Digest and Kerberos based security.
* Microkernel: Run Akka as a stand-alone kernel.
</description>
<properties>
@ -39,7 +53,6 @@
<module>akka-actors</module>
<module>akka-persistence</module>
<module>akka-rest</module>
<module>akka-camel</module>
<module>akka-amqp</module>
<module>akka-security</module>
<module>akka-kernel</module>