Changes between Version 2 and Version 3 of Session2


Ignore:
Timestamp:
Oct 1, 2015, 12:21:42 AM (10 years ago)
Author:
Greg Couch
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Session2

    v2 v3  
    1111== The Problem ==
    1212
    13 Ideally, when restoring a session, all data that is referenced by some other data has already been restored.  So the all of dependencies need to be known by the saving code and there can be no circular dependencies.  This avoids two-phase initialization, which is especially important for C++ objects.
     13Ideally, when restoring a session, all data that is referenced by some other data has already been restored.  Therefore all of dependencies need to be known by the saving code and there can be no circular dependencies.  This avoids two-phase initialization, which is especially important for C++ objects.
    1414
    1515=== Where is Session State? ===
     
    4242
    4343* How to give dependencies for ordering session data?
     44  * naive data with back references are circular
     45  * may need to give before and after dependencies
    4446* What is the granularity?
    4547* Can we guarantee non-circular references?
     48* Can we provide a "simple" API for tools?
     49
     50== Part of the Solution ==
     51
     52Saving protocol:
     531. visit all session state and record:
     54  * what tool is responsible for the state
     55  * what data it refers to and
     56    * only referred to data needs to be named
     571. save the list of used tools
     581. serialize state
     59  * keep track of named data that was saved
     601. confirm that all referred to data was saved
     61
     62Restoring protocol:
     631. Read the list of used tools
     64  * if installed tools are insufficient, then give user option to cancel or load tools
     651. deserialze state inside block/unblock of triggers
     66