1 __all__ = ('BlockStorageTypeFactory',)
5 log = logging.getLogger("pyoram")
7 def BlockStorageTypeFactory(storage_type_name):
8 if storage_type_name in BlockStorageTypeFactory._registered_devices:
9 return BlockStorageTypeFactory.\
10 _registered_devices[storage_type_name]
13 "BlockStorageTypeFactory: Unsupported storage "
14 "type: %s" % (storage_type_name))
15 BlockStorageTypeFactory._registered_devices = {}
17 def _register_device(name, type_):
18 if name in BlockStorageTypeFactory._registered_devices:
19 raise ValueError("Can not register block storage device type "
20 "with name '%s'. A device type is already "
21 "registered with that name." % (name))
22 if not issubclass(type_, BlockStorageInterface):
23 raise TypeError("Can not register block storage device type "
24 "'%s'. The device must be a subclass of "
25 "BlockStorageInterface" % (type_))
26 BlockStorageTypeFactory._registered_devices[name] = type_
27 BlockStorageTypeFactory.register_device = _register_device
29 class BlockStorageInterface(object):
33 def __exit__(self, *args):
40 def clone_device(self, *args, **kwds):
41 raise NotImplementedError # pragma: no cover
44 def compute_storage_size(cls, *args, **kwds):
45 raise NotImplementedError # pragma: no cover
47 def setup(cls, *args, **kwds):
48 raise NotImplementedError # pragma: no cover
51 def header_data(self, *args, **kwds):
52 raise NotImplementedError # pragma: no cover
54 def block_count(self, *args, **kwds):
55 raise NotImplementedError # pragma: no cover
57 def block_size(self, *args, **kwds):
58 raise NotImplementedError # pragma: no cover
60 def storage_name(self, *args, **kwds):
61 raise NotImplementedError # pragma: no cover
63 def update_header_data(self, *args, **kwds):
64 raise NotImplementedError # pragma: no cover
65 def close(self, *args, **kwds):
66 raise NotImplementedError # pragma: no cover
67 def read_blocks(self, *args, **kwds):
68 raise NotImplementedError # pragma: no cover
69 def yield_blocks(self, *args, **kwds):
70 raise NotImplementedError # pragma: no cover
71 def read_block(self, *args, **kwds):
72 raise NotImplementedError # pragma: no cover
73 def write_blocks(self, *args, **kwds):
74 raise NotImplementedError # pragma: no cover
75 def write_block(self, *args, **kwds):
76 raise NotImplementedError # pragma: no cover
80 raise NotImplementedError # pragma: no cover
82 def bytes_received(self):
83 raise NotImplementedError # pragma: no cover