Bonjour chers amis, Just to let you know that I uploaded a simple real time events monitor to the SqueakSource repository, it could be useful for those who use the SASE protocol (#when:send:to: , #triggerEvent: and friends). Cheers.
Hernán
PD: Download from http://www.squeaksource.com/EventsMonitor.html
sounds interesting. What is the key behavior (psy unexpected dependencies?
On Dec 13, 2008, at 6:40 AM, Hernán Morales Durand wrote:
Bonjour chers amis, Just to let you know that I uploaded a simple real time events monitor to the SqueakSource repository, it could be useful for those who use the SASE protocol (#when:send:to: , #triggerEvent: and friends). Cheers.
Hernán
PD: Download from http://www.squeaksource.com/EventsMonitor.html _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Thanks for the feedback from both lists, To test the monitor doIt this trivial example:
| obj1 obj2 |
obj1 := VersionNumber fromString: '30'. obj2 := VersionNumber fromString: '31'. obj1 when: #myEvent send: #printString to: obj2. obj1 triggerEvent: #myEvent. { obj1 . obj2 } inspect
and start the event monitor. If you use code like that anytime, the monitor will show you in real-time the event table state.
Possible uses includes:
- As a tool for learning about weak dictionaries, used currently by the EventManager. An interesting exercise question with the above code is: when do you think the (Weak)MessageSend will be garbage collected? (try to answer first without spying possible answers :)
A) Closing the inspector will do it. B) No, some GC thing will nil event symbols and then the weak messages will dissapear. C) Anything doing #flushEvents. D) Smalltalk garbageCollect. E) Manually nil all the event symbols in each object's action map:
EventManager actionMaps associationsDo: [: assoc | assoc value associationsDo: [: idAssoc | idAssoc key = #getCompletionController ifFalse: [ idAssoc key: nil ] ] ]
F) A winner combination of the above G) None of the above.
- As a tool for observe an intensive use of SASE events, as we do in some complex UI applications using SmallFaces. - As an example of a simple tool for real-time monitoring. If you want your own monitor, subclass EventMonitor, re-implement #start something like the following (an example for some morphic events) :
start " Start monitoring events " | userText |
userText := UIManager default request: 'Type a class in the Morph hierarchy'. userText isEmptyOrNil ifTrue: [ self morphicClass: PasteUpMorph ] ifFalse: [ ( Smalltalk hasClassNamed: userText asSymbol ) ifTrue: [ self morphicClass: ( Smalltalk at: userText asSymbol ) ] ifFalse: [ self error: 'Class not found ' , userText ] ]. super start.
and #eventsReport according to sample your object graph. In this example:
eventsReport " Answer a String with the current status of events in my domain "
| dict |
^ String streamContents: [ : s | counter := counter + 1. s nextPutAll: '====== Samples : '; print: counter; cr. self morphicClass allSubInstancesDo: [: morph | ( dict := morph valueOfProperty: #actionMap ) ifNotNil: [ s nextPutAll: 'Source : '; print: morph; cr; nextPutAll: ' ActionMap : '; cr. dict associationsDo: [: idAssoc | s nextPutAll: ' Event : '; print: idAssoc key; cr; nextPutAll: ' Message : '; print: idAssoc value; cr ] ]. s cr ] ]
Cheers
Hernán
2008/12/13 Stéphane Ducasse stephane.ducasse@inria.fr
sounds interesting. What is the key behavior (psy unexpected dependencies?
On Dec 13, 2008, at 6:40 AM, Hernán Morales Durand wrote:
Bonjour chers amis, Just to let you know that I uploaded a simple real time events monitor to the SqueakSource repository, it could be useful for those who use the SASE protocol (#when:send:to: , #triggerEvent: and friends). Cheers.
Hernán
PD: Download from http://www.squeaksource.com/EventsMonitor.html _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
squeak-dev@lists.squeakfoundation.org