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.
smime.p7s
Description: S/MIME cryptographic signature