I've just checked in a fair bit of re-factoring to try to define reasonable storage interfaces. The results can be found at:

  http://svn.zope.org/ZODB/trunk/src/ZODB/interfaces.py?view=auto

and

  http://svn.zope.org/ZODB/trunk/src/ZEO/interfaces.py?view=auto

Some notes:

- I added a new tpc_transaction method to allow ZEO to get some information it needs without groping for _transaction. Storage servers will still work with storages that don't have this method, but will log problems. Current storage implementations should add this method.

- I'm not sure whether history, loadSerial, pack, and registerDB, should be in IStorage. I have a feeling that packing and other database-management tasks should be exposed some other way. history and loadSerial are fairly special, although they can be wildly useful. (IMO, there should be a history view for all Zope objects that lets one at least see the transaction history for an object even if looking at old data isn't supported.) Only very specialized storages need registerDB AFAICT.

- See my earlier message about getExtensionMethods.

- I was able to retire a poorly documented and understood method that was only needed by ZEO: loadEx.

- Intentionally included version-support methods from the APIs.

- I arranged that storages that don't support undo or versions don't need to provide any of the methods.

I cleaned up various other sundry things along the way and identified some bugs, fixing at least one.

Comments on the APIs are very welcome. Hopefully this will clarify some things.

One of my text tasks will be to add some documentation about concurrency requirements.

Jim

--
Jim Fulton                      mailto:[EMAIL PROTECTED]                Python 
Powered!
CTO                             (540) 361-1714                  
http://www.python.org
Zope Corporation        http://www.zope.com             http://www.zope.org



_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to