merged with master
This commit is contained in:
commit
ec8feae565
69 changed files with 312 additions and 709 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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 !: 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 !: 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 {
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]))
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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}
|
||||
|
||||
|
|
@ -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é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 =>
|
||||
|
|
@ -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
|
||||
21
akka-actors/src/main/scala/serialization/Compression.scala
Normal file
21
akka-actors/src/main/scala/serialization/Compression.scala
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* Copyright (C) 2009 Scalable Solutions.
|
||||
*/
|
||||
|
||||
package se.scalablesolutions.akka.serialization
|
||||
|
||||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
object Compression {
|
||||
|
||||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Boné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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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ér</a>
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -1 +0,0 @@
|
|||
class=se.scalablesolutions.akka.kernel.camel.ActiveObjectComponent
|
||||
|
|
@ -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é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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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é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 + "]"
|
||||
}
|
||||
|
|
@ -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é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
|
||||
}
|
||||
|
|
@ -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é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 + "]"
|
||||
}
|
||||
|
|
@ -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]
|
||||
}
|
||||
|
|
@ -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ér</a>
|
||||
*/
|
||||
trait MessageDriven {
|
||||
def onMessage(exchange: Exchange)
|
||||
}
|
||||
|
|
@ -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ér</a>
|
||||
*/
|
||||
class SupervisorAwareCamelContext extends DefaultCamelContext with Logging {
|
||||
var supervisor: Supervisor = _
|
||||
}
|
||||
|
|
@ -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é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 "
|
||||
}
|
||||
*/
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
@ -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 {
|
||||
|
|
@ -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._
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -10,7 +10,7 @@
|
|||
* Copyright (C) 2009 Scalable Solutions.
|
||||
*/
|
||||
|
||||
package se.scalablesolutions.akka.nio
|
||||
package se.scalablesolutions.akka.remote
|
||||
|
||||
import scala.collection.mutable.HashMap
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
|
|
@ -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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<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> |
|
||||
<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> |
|
||||
<a href="#Fields">FIELDS</a> |
|
||||
<a href="#Methods">METHODS</a>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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>
|
||||
Binary file not shown.
|
|
@ -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>
|
||||
Binary file not shown.
|
|
@ -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>
|
||||
Binary file not shown.
|
|
@ -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>
|
||||
Binary file not shown.
BIN
embedded-repo/voldemort/store/compress/h2-lzf/1.0/h2-lzf-1.0.jar
Normal file
BIN
embedded-repo/voldemort/store/compress/h2-lzf/1.0/h2-lzf-1.0.jar
Normal file
Binary file not shown.
|
|
@ -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
27
pom.xml
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue