mirror of
https://github.com/gogcom/galaxy-integrations-python-api.git
synced 2026-04-18 13:16:53 -04:00
SDK-2910: Fix readline
This commit is contained in:
@@ -74,7 +74,7 @@ class Server():
|
||||
self._notifications = {}
|
||||
self._eof_listeners = []
|
||||
self._input_buffer = bytes()
|
||||
self._input_buffer_it = 0
|
||||
self._processed_input_buffer_it = 0
|
||||
|
||||
def register_method(self, name, callback, internal, sensitive_params=False):
|
||||
"""
|
||||
@@ -120,18 +120,21 @@ class Server():
|
||||
async def _readline(self):
|
||||
"""Like StreamReader.readline but without limit"""
|
||||
while True:
|
||||
chunk = await self._reader.read(1024)
|
||||
self._input_buffer += chunk
|
||||
it = self._input_buffer.find(b"\n", self._input_buffer_it)
|
||||
if it < 0:
|
||||
# check if there is no unprocessed data in the buffer
|
||||
if not self._input_buffer or self._processed_input_buffer_it != 0:
|
||||
chunk = await self._reader.read(1024)
|
||||
if not chunk:
|
||||
return bytes() # EOF
|
||||
else:
|
||||
self._input_buffer_it = len(self._input_buffer)
|
||||
continue
|
||||
self._input_buffer += chunk
|
||||
|
||||
it = self._input_buffer.find(b"\n", self._processed_input_buffer_it)
|
||||
if it < 0:
|
||||
self._processed_input_buffer_it = len(self._input_buffer)
|
||||
continue
|
||||
|
||||
line = self._input_buffer[:it]
|
||||
self._input_buffer = self._input_buffer[it+1:]
|
||||
self._input_buffer_it = 0
|
||||
self._processed_input_buffer_it = 0
|
||||
return line
|
||||
|
||||
def stop(self):
|
||||
|
||||
Reference in New Issue
Block a user