OpenQuizz
Une application de gestion des contenus pédagogiques
LockedFD Class Reference
Inheritance diagram for LockedFD:
Collaboration diagram for LockedFD:

Public Member Functions

def __init__ (self, filepath)
 
def __del__ (self)
 
def open (self, write=False, stream=False)
 
def commit (self)
 
def rollback (self)
 

Detailed Description

This class facilitates a safe read and write operation to a file on disk.
If we write to 'file', we obtain a lock file at 'file.lock' and write to
that instead. If we succeed, the lock file will be renamed to overwrite
the original file.

When reading, we obtain a lock file, but to prevent other writers from
succeeding while we are reading the file.

This type handles error correctly in that it will assure a consistent state
on destruction.

**note** with this setup, parallel reading is not possible

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  filepath 
)
Initialize an instance with the givne filepath

◆ __del__()

def __del__ (   self)

Member Function Documentation

◆ commit()

def commit (   self)
When done writing, call this function to commit your changes into the
actual file.
The file descriptor will be closed, and the lockfile handled.

**Note** can be called multiple times

◆ open()

def open (   self,
  write = False,
  stream = False 
)
Open the file descriptor for reading or writing, both in binary mode.

:param write: if True, the file descriptor will be opened for writing. Other
    wise it will be opened read-only.
:param stream: if True, the file descriptor will be wrapped into a simple stream
    object which supports only reading or writing
:return: fd to read from or write to. It is still maintained by this instance
    and must not be closed directly
:raise IOError: if the lock could not be retrieved
:raise OSError: If the actual file could not be opened for reading

**note** must only be called once

◆ rollback()

def rollback (   self)
Abort your operation without any changes. The file descriptor will be
closed, and the lock released.

**Note** can be called multiple times

The documentation for this class was generated from the following file: