MCPcopy
hub / github.com/pyload/pyload / ChunkInfo

Class ChunkInfo

module/network/HTTPChunk.py:37–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36
37class ChunkInfo():
38 def __init__(self, name):
39 self.name = decode(name)
40 self.size = 0
41 self.resume = False
42 self.chunks = []
43
44 def __repr__(self):
45 ret = "ChunkInfo: %s, %s\n" % (self.name, self.size)
46 for i, c in enumerate(self.chunks):
47 ret += "%s# %s\n" % (i, c[1])
48
49 return ret
50
51 def setSize(self, size):
52 self.size = int(size)
53
54 def addChunk(self, name, range):
55 self.chunks.append((name, range))
56
57 def clear(self):
58 self.chunks = []
59
60 def createChunks(self, chunks):
61 self.clear()
62 chunk_size = self.size / chunks
63
64 current = 0
65 for i in range(chunks):
66 end = self.size - 1 if (i == chunks - 1) else current + chunk_size
67 self.addChunk("%s.chunk%s" % (self.name, i), (current, end))
68 current += chunk_size + 1
69
70 def save(self):
71 fs_name = fs_encode("%s.chunks" % self.name)
72 fh = codecs.open(fs_name, "w", "utf_8")
73 fh.write("name:%s\n" % self.name)
74 fh.write("size:%s\n" % self.size)
75 for i, c in enumerate(self.chunks):
76 fh.write("#%d:\n" % i)
77 fh.write("\tname:%s\n" % c[0])
78 fh.write("\trange:%i-%i\n" % c[1])
79 fh.close()
80
81 @staticmethod
82 def load(name):
83 fs_name = fs_encode("%s.chunks" % name)
84 if not os.path.exists(fs_name):
85 raise IOError()
86 fh = codecs.open(fs_name, "r", "utf_8")
87 name = fh.readline()[:-1]
88 size = fh.readline()[:-1]
89 if name.startswith("name:") and size.startswith("size:"):
90 name = name[5:]
91 size = size[5:]
92 else:
93 fh.close()
94 raise WrongFormat()

Callers 2

__init__Method · 0.90
loadMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected