MCPcopy Index your code
hub / github.com/apache/fory / OneByteStream

Class OneByteStream

python/pyfory/tests/test_stream.py:28–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26
27
28class OneByteStream:
29 def __init__(self, data: bytes):
30 self._data = data
31 self._offset = 0
32
33 def read(self, size=-1):
34 if self._offset >= len(self._data):
35 return b""
36 if size < 0:
37 size = len(self._data) - self._offset
38 if size == 0:
39 return b""
40 read_size = min(1, size, len(self._data) - self._offset)
41 start = self._offset
42 self._offset += read_size
43 return self._data[start : start + read_size]
44
45 def readinto(self, buffer):
46 if self._offset >= len(self._data):
47 return 0
48 view = memoryview(buffer).cast("B")
49 if len(view) == 0:
50 return 0
51 read_size = min(1, len(view), len(self._data) - self._offset)
52 start = self._offset
53 self._offset += read_size
54 view[:read_size] = self._data[start : start + read_size]
55 return read_size
56
57 def recv_into(self, buffer, size=-1):
58 if self._offset >= len(self._data):
59 return 0
60 view = memoryview(buffer).cast("B")
61 if size < 0 or size > len(view):
62 size = len(view)
63 if size == 0:
64 return 0
65 read_size = min(1, size, len(self._data) - self._offset)
66 start = self._offset
67 self._offset += read_size
68 view[:read_size] = self._data[start : start + read_size]
69 return read_size
70
71 def recvinto(self, buffer, size=-1):
72 return self.recv_into(buffer, size)
73
74
75class OneByteWriteStream:

Calls

no outgoing calls