From c5f53b7d64479c7e31ba315ac6270d46d29e3b18 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 27 Jul 2014 10:48:51 +0200 Subject: dispatcher: Merge code from Norbert to allow to install alternative dispatchers Norbert introduced the MockDispatcher to get nice and direct exceptions. --- Dispatcher.st | 22 +++++++++++++++++++--- 1 file 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 [ - ^ super new - initialize; + ^super new addToBeFinalized; + startDispatching; yourself ] - initialize [ + Dispatcher class >> install [ + + | dispatcher | + dispatcher := Smalltalk at: #OsmoDispatcher ifAbsentPut: [self new]. + ^dispatcher class = self + ifTrue: [dispatcher] + ifFalse: [ + dispatcher terminate. + Smalltalk at: #OsmoDispatcher put: self new] + ] + + startDispatching [ quit := false. queue := SharedQueue new. @@ -66,6 +77,11 @@ Object subclass: Dispatcher [ sem wait. ] + + terminate [ + + dispatch terminate + ] ] Eval [ -- cgit v1.2.3