On 08.10.2012 11:31, Camillo Bruni wrote:
Just from the deleted wiki page on our google code project site:


Squeak startup and shutdown lists are iterated too often, and startup is 
ignored by the network classes.

= Introduction =
== Squeak/Pharo Problems ==
Squeak's startup and shutdown lists are not used as such.  Each snapshot forces 
a shutdown and then a startup.  This is not only inefficient, it is unfair to 
things like open sockets, database connections, etc.  Platform windows will not 
be well served: imagine shutting down the entire IDE for a snapshot; something 
needs to be done.
This is false, using startUp:/shutDown: serves exactly this purpose.

Dolphin does not free external resources on a snapshot.  Resources are freed on 
shutdown (by registering for the shutdown events) and pointers/handles are 
cleared on *startup*.  Having worked with it for years, I have gone from 
considering it strange to believing it is the correct design.


== First Steps Toward a Fix ==
It became clear that my life would be easier given a singleton SessionManager 
that triggers #sessionStarted and #sessionStopped.  The open question was 
whether Squeak's startup and shutdown lists with the quitting and resuming 
flags would be enough to reproduce Dolphin's behavior, which is to trigger 
#sessionStarted and #sessionStopped when *and only when* the image starts and 
stops, respectively.  Somewhat surprisingly, it appears to be.  I am left 
wondering why people have tolerated the need to litter images with 
#initializeNetwork sends; that should be done once every time the image starts.
And this is true, you can achieve the same using startUp:/shutDown: as you can in Dolphin. Whether that is the best interface, or a manager/announcer would be better is a different question.

Ironically, the session object Igor describes would necessitate the same kind of intrusive checks as #initializeNetwork.

IMO, lazily checking whether the image has been restarted whenever you want to do something stinks.
Registering to be notified when image starts/stops is a lot better.

Cheers,
Henry

Reply via email to