Merge pull request #551 from coreos-inc/python-registry-v2-swift
Add V2 storage methods to Swift storage engine
This commit is contained in:
commit
41bfe2ffde
2 changed files with 112 additions and 3 deletions
|
@ -85,6 +85,27 @@ class FilelikeStreamConcat(BaseStreamFilelike):
|
|||
return self.read(size)
|
||||
|
||||
|
||||
class LimitingStream(BaseStreamFilelike):
|
||||
def __init__(self, fileobj, read_limit=READ_UNTIL_END):
|
||||
super(LimitingStream, self).__init__(fileobj)
|
||||
self._read_limit = read_limit
|
||||
self.byte_count_read = 0
|
||||
|
||||
def read(self, size=READ_UNTIL_END):
|
||||
max_bytes_to_read = -1
|
||||
|
||||
# If a read limit is specified, then determine the maximum number of bytes to return.
|
||||
if self._read_limit != READ_UNTIL_END:
|
||||
if size == READ_UNTIL_END:
|
||||
size = self._read_limit
|
||||
|
||||
max_bytes_to_read = min(self._read_limit - self.byte_count_read, size)
|
||||
|
||||
byte_data_read = super(LimitingStream, self).read(max_bytes_to_read)
|
||||
self.byte_count_read = self.byte_count_read + len(byte_data_read)
|
||||
return byte_data_read
|
||||
|
||||
|
||||
class StreamSlice(BaseStreamFilelike):
|
||||
def __init__(self, fileobj, start_offset=0, end_offset_exclusive=READ_UNTIL_END):
|
||||
super(StreamSlice, self).__init__(fileobj)
|
||||
|
|
Reference in a new issue