diff options
author | Kevin Greenan <kmgreen2@gmail.com> | 2015-02-03 22:27:23 -0800 |
---|---|---|
committer | Kevin Greenan <kmgreen2@gmail.com> | 2015-02-07 11:12:52 -0800 |
commit | bcf856f4dac541e78763398c98584e6382d4359c (patch) | |
tree | 960796513434a64382a17b291aaf12612f2c0439 /pyeclib/core.py | |
parent | 3b36b99799d4d7bb7e43490dacf4a57b0528730b (diff) | |
download | pyeclib-bcf856f4dac541e78763398c98584e6382d4359c.tar.gz |
Adding support for checking fragment metadata during decode and plumbing
ragne parameter from python down to the C API.
Diffstat (limited to 'pyeclib/core.py')
-rw-r--r-- | pyeclib/core.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/pyeclib/core.py b/pyeclib/core.py index b50d3e7..0756df6 100644 --- a/pyeclib/core.py +++ b/pyeclib/core.py @@ -82,7 +82,7 @@ class ECPyECLibDriver(object): return fragment_len - def decode(self, fragment_payloads): + def decode(self, fragment_payloads, ranges=None, force_metadata_checks=False): fragment_len = self._validate_and_return_fragment_size(fragment_payloads) if fragment_len < 0: raise ECPyECLibException("Invalid fragment payload in ECPyECLibDriver.decode") @@ -90,7 +90,8 @@ class ECPyECLibDriver(object): if len(fragment_payloads) < self.k: raise ECPyECLibException("Not enough fragments given in ECPyECLibDriver.decode") - return pyeclib_c.decode(self.handle, fragment_payloads, fragment_len) + return pyeclib_c.decode(self.handle, fragment_payloads, fragment_len, ranges, force_metadata_checks) + def reconstruct(self, fragment_payloads, indexes_to_reconstruct): @@ -143,7 +144,7 @@ class ECNullDriver(object): def encode(self, data_bytes): pass - def decode(self, fragment_payloads): + def decode(self, fragment_payloads, ranges, force_metadata_checks): pass def reconstruct(self, available_fragment_payloads, @@ -207,13 +208,22 @@ class ECStripingDriver(object): return fragments - def decode(self, fragment_payloads): + def decode(self, fragment_payloads, ranges=None, force_metadata_checks=False): """Convert a k-fragment data stripe into a string :param fragment_payloads: fragments (in order) to convert into a string + :param ranges (unsupported): this driver does not current support range + decode + :param force_metadata_checks (unsupported): this driver does not support + fragment metadata :returns: a string containing the original data :raises: ECPyECLibException if there is an error during decoding """ - + if ranges is not None: + raise ECPyECLibException( + "Decode does not support range requests in the striping driver.") + if force_metadata_checks is not False: + raise ECPyECLibException( + "Decode does not support metadata integrity checks in the striping driver.") if len(fragment_payloads) != self.k: raise ECPyECLibException( "Decode requires %d fragments, %d fragments were given" % |