fixed TX Vector and TX Ref plus added tests + rewrote Reactor impl + added custom Actor impl(currently not used though)
This commit is contained in:
parent
74bd8dea6d
commit
167b724671
15 changed files with 1148 additions and 274 deletions
35
kernel/src/main/scala/reactor/MessageDispatcherBase.scala
Normal file
35
kernel/src/main/scala/reactor/MessageDispatcherBase.scala
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* Copyright (C) 2009 Scalable Solutions.
|
||||
*/
|
||||
|
||||
package se.scalablesolutions.akka.kernel.reactor
|
||||
|
||||
import java.util.concurrent.{ConcurrentMap, ConcurrentHashMap}
|
||||
|
||||
trait MessageDispatcherBase extends MessageDispatcher {
|
||||
val messageQueue = new MessageQueue
|
||||
|
||||
protected val messageHandlers = new ConcurrentHashMap[AnyRef, MessageHandler]
|
||||
protected var selectorThread: Thread = _
|
||||
@volatile protected var active: Boolean = false
|
||||
protected val guard = new Object
|
||||
|
||||
def registerHandler(key: AnyRef, handler: MessageHandler) = guard.synchronized {
|
||||
messageHandlers.put(key, handler)
|
||||
}
|
||||
|
||||
def unregisterHandler(key: AnyRef) = guard.synchronized {
|
||||
messageHandlers.remove(key)
|
||||
}
|
||||
|
||||
def shutdown = if (active) {
|
||||
active = false
|
||||
selectorThread.interrupt
|
||||
doShutdown
|
||||
}
|
||||
|
||||
/**
|
||||
* Subclass callback. Override if additional shutdown behavior is needed.
|
||||
*/
|
||||
protected def doShutdown = {}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue