Hi,

Guillermo, Pablo and I started to work on a new implementation for the image 
startup / shutdown list.
The old implementation misses domain objects, polluted the SmalltalkImage class 
and introduced crazy dependencies to other packages.

So, what is Session Manager?
a replacement of the Session class (is now WorkingSession)
a rewrite of startup / shutdown list with domain objects 
SessionManager: can create new sessions and manage categories. Also provide a 
facade to register new session handlers. Session manager provide sthe list of 
handlers by order of priority (categories order and categories priority) either 
for the startup or the shutdown, 
WorkingSession: unique object for the current smalltalk session (I.e. between a 
startup and a shutdown). On each image startup the current session is 
invalidated and a new session is created. Define how errors should be handled. 
Run the startup / shutdown process. 
SessionCategory: we defined some well known categories for startup / shutdown: 
system, network, GUI, tools and there is room to add user specific categories, 
It help to run the handler at the right time without caring about the whole 
order.
and SessionHandlers: handleSession for a specific class or any other object.
the shutdown list is now simply the startup list reversed
we also refactored error handling at startup by using the UIManager and 
StartupUIManager. It allowed to remove ugly checks like #isInteractive, 
isHeadless in error handling methods and centralize that in UIManager.

You can find an image with the new SessionManager in action here: 
https://ci.inria.fr/pharo-contribution/job/SessionManager/

As it is a critical piece of code, could you play / test it a bit before we 
integrate this new mechanism in the Pharo image?

Regards,
Christophe

ps: Pharo tests pass
ps2: There is still some code to clean / remove from the old startup management 
system.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to