wsgidav.lock_man.lock_storage.LockStorageDict

class wsgidav.lock_man.lock_storage.LockStorageDict[source]

Bases: object

An in-memory lock manager storage implementation using a dictionary.

R/W access is guarded by a thread.lock object.

Also, to make it work with a Shelve dictionary, modifying dictionary members is done by re-assignment and we call a _flush() method.

This is obviously not persistent, but should be enough in some cases. For a persistent implementation, see lock_storage.LockStorageShelve().

Notes

expire is stored as expiration date in seconds since epoch (not in seconds until expiration).

The dictionary is built like:

  { 'URL2TOKEN:/temp/litmus/lockme': ['opaquelocktoken:0x1d7b86...',
                                      'opaquelocktoken:0xd7d4c0...'],
    'opaquelocktoken:0x1d7b86...': {
      'depth': '0',
      'owner': "<?xml version='1.0' encoding='UTF-8'?>\n<owner xmlns="DAV:">"
          + "litmus test suite</owner>\n",
      'principal': 'tester',
      'root': '/temp/litmus/lockme',
      'scope': 'shared',
      'expire': 1261328382.4530001,
      'token': 'opaquelocktoken:0x1d7b86...',
      'type': 'write',
      },
    'opaquelocktoken:0xd7d4c0...': {
      'depth': '0',
      'owner': '<?xml version='1.0' encoding='UTF-8'?>\n<owner xmlns="DAV:">'
          + 'litmus: notowner_sharedlock</owner>\n',
      'principal': 'tester',
      'root': '/temp/litmus/lockme',
      'scope': 'shared',
      'expire': 1261328381.6040001,
      'token': 'opaquelocktoken:0xd7d4c0...',
      'type': 'write'
     },
   }

.. autosummary::
   :toctree:

   LockStorageDict.LOCK_TIME_OUT_DEFAULT
   LockStorageDict.LOCK_TIME_OUT_MAX





.. autosummary::
   :toctree:

   LockStorageDict.cleanup
   LockStorageDict.clear
   LockStorageDict.close
   LockStorageDict.create
   LockStorageDict.delete
   LockStorageDict.get
   LockStorageDict.get_lock_list
   LockStorageDict.open
   LockStorageDict.refresh