>> No, because the Announcement>>#handles: takes a class, not an instance.
>>
>
> you mean here:
>
> deliver: anAnnouncement
>        " deliver an announcement to receiver. In case of failure, it will be
> handled in separate process"
>
>        ^ (self handles: anAnnouncement class ) ifTrue: [
>                [action cull: anAnnouncement cull: announcer]
>                        on: UnhandledError fork: [:ex | ex pass ]]
>
> we can simply change the 'anAnnouncement class' to just 'anAnnouncement'
> so the receiver of #handles: will see an announcement itself not its class.
>
> It is probably right thing to do, because then you can do:
>
>
> announcer on: foo do: [... ].
>
> announcer announce: 10.
>
> Then foo will receive:
>
> foo handles: 10.
> and in your own #handles: implementation you can do something like:
>
> handles: anAnnouncement
>  ^ anAnnouncement isInteger

Yes, #handles: should take an instance not a class. And #handles:
should be implemented as

  Announcement class>>#handles: anAnnouncement
      ^ anAnnouncement isKindOf: self

I guess this is partially my fault, because I called the argument
anAnnouncementClass even if I passed in an instance.

Lukas

-- 
Lukas Renggli
www.lukas-renggli.ch

Reply via email to