summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-27 10:48:51 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-27 10:48:51 +0200
commitc5f53b7d64479c7e31ba315ac6270d46d29e3b18 (patch)
tree36f6732f10b91df6c00b4515855e95ab1eb74e8c
parentf2be90484850def90ca0caf11969a3ade2227446 (diff)
dispatcher: Merge code from Norbert to allow to install alternative dispatchers
Norbert introduced the MockDispatcher to get nice and direct exceptions.
-rw-r--r--Dispatcher.st22
1 files changed, 19 insertions, 3 deletions
diff --git a/Dispatcher.st b/Dispatcher.st
index fcd79ee..d6121fb 100644
--- a/Dispatcher.st
+++ b/Dispatcher.st
@@ -28,13 +28,24 @@ Object subclass: Dispatcher [
Dispatcher class >> new [
<category: 'private'>
- ^ super new
- initialize;
+ ^super new
addToBeFinalized;
+ startDispatching;
yourself
]
- initialize [
+ Dispatcher class >> install [
+ <category: 'singleton'>
+ | dispatcher |
+ dispatcher := Smalltalk at: #OsmoDispatcher ifAbsentPut: [self new].
+ ^dispatcher class = self
+ ifTrue: [dispatcher]
+ ifFalse: [
+ dispatcher terminate.
+ Smalltalk at: #OsmoDispatcher put: self new]
+ ]
+
+ startDispatching [
<category: 'private'>
quit := false.
queue := SharedQueue new.
@@ -66,6 +77,11 @@ Object subclass: Dispatcher [
sem wait.
]
+
+ terminate [
+ <category: 'private'>
+ dispatch terminate
+ ]
]
Eval [