MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / WriteBuffer

Class WriteBuffer

projects/Python/proto/fbe.py:52–186  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50
51# Fast Binary Encoding write buffer based on the dynamic byte array
52class WriteBuffer(object):
53 __slots__ = "_buffer", "_offset", "_size",
54
55 def __init__(self, capacity=0):
56 self._buffer = bytearray(capacity)
57 self._size = 0
58 self._offset = 0
59
60 def __bool__(self):
61 return not self.empty
62
63 @property
64 def empty(self):
65 return (self._buffer is None) or (self._size <= 0)
66
67 @property
68 def buffer(self):
69 return self._buffer
70
71 @property
72 def capacity(self):
73 return len(self._buffer)
74
75 @property
76 def size(self):
77 return self._size
78
79 def __len__(self):
80 return self._size
81
82 @property
83 def offset(self):
84 return self._offset
85
86 # Attach an empty memory buffer
87 def attach_new(self):
88 self._buffer = bytearray()
89 self._size = 0
90 self._offset = 0
91
92 # Attach an empty memory buffer with a given capacity
93 def attach_capacity(self, capacity):
94 self._buffer = bytearray(capacity)
95 self._size = 0
96 self._offset = 0
97
98 # Attach a given memory buffer
99 def attach_buffer(self, buffer, offset=0, size=None):
100 assert (buffer is not None), "Invalid buffer!"
101 if buffer is None:
102 raise ValueError("Invalid buffer!")
103
104 if size is None:
105 size = len(buffer)
106
107 assert (size > 0), "Invalid size!"
108 if size <= 0:
109 raise ValueError("Invalid size!")

Callers 3

__init__Method · 0.70
__init__Method · 0.70
__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected