pyfec: add easyfec.Decoder(), which is easier to use than fec.Decoder()
authorZooko O'Whielacronx zooko@zooko.com <zooko@zooko.com>
Sat, 14 Apr 2007 17:52:45 +0000 (23:22 +0530)
committerZooko O'Whielacronx zooko@zooko.com <zooko@zooko.com>
Sat, 14 Apr 2007 17:52:45 +0000 (23:22 +0530)
darcs-hash:95bf3656157b44e5c7eddfae3430d4db0204ef30

pyfec/fec/easyfec.py

index de7e8b9543ceaaec7b78c213683631c98d34098b..8fc15061ed30030e9a6bce057f619f9cf7efaef8 100644 (file)
@@ -7,7 +7,6 @@ def div_ceil(n, d):
     """
     return (n/d) + (n%d != 0)
 
-
 class Encoder(object):
     def __init__(self, k, m):
         self.fec = fec.Encoder(k, m)
@@ -22,8 +21,17 @@ class Encoder(object):
         # padding
         if len(l[-1]) != len(l[0]):
             l[-1] = l[-1] + ('\x00'*(len(l[0])-len(l[-1])))
-        return self.fec.encode(l)
-        
-    def decode(self, blocks):
-        return self.fec.decode(blocks)
+        res = self.fec.encode(l)
+        return res
         
+class Decoder(object):
+    def __init__(self, k, m):
+        self.fec = fec.Decoder(k, m)
+
+    def decode(self, blocks, sharenums, padlen=0):
+        blocks = self.fec.decode(blocks, sharenums)
+        data = ''.join(blocks)
+        if padlen:
+            data = data[:-padlen]
+        return data
+