diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-07-27 10:48:51 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-07-27 10:48:51 +0200 |
commit | c5f53b7d64479c7e31ba315ac6270d46d29e3b18 (patch) | |
tree | 36f6732f10b91df6c00b4515855e95ab1eb74e8c | |
parent | f2be90484850def90ca0caf11969a3ade2227446 (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.st | 22 |
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 [ |