2015-12-04 13:39 GMT+01:00 Christophe Demarey <christophe.dema...@inria.fr>:
> 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? > Looks good. What are the main critical startup/shutdown users( classes) that should be tested? I did some tests with AthensSceneView (uses NB and calls Smalltalk session for reinit external resources) and Roassal. I got one image startup failure, but I couldn't reproduce it yet. Maybe I did image save and image save and quit, too quick. > > Regards, > Christophe > > ps: Pharo tests pass > ps2: There is still some code to clean / remove from the old startup > management system. >