INNER CODE UNIT · Python
serve
oneclickvirt/ecs · agent/server.py:291
def serve(adapter, input_stream=sys.stdin, output_stream=sys.stdout):
for line in input_stream:
if len(line) > LIMIT:
error = {"jsonrpc": "2.0", "id": None, "error": {"code": -32600, "message": "Message exceeds 1 MiB"}}
output_stream.write(json.dumps(error) + "\n")
output_stream.flush()
continue
try:
message = json.loads(line)
except ValueError:
output_stream.write(json.dumps({"jsonrpc": "2.0", "id": None, "error": {"code": -32700, "message": "Parse error"}}) + "\n")
output_stream.flush()
continue
if not isinstance(message, dict) or message.get("jsonrpc") != "2.0" or not isinstance(message.get("method"), str):
output_stream.write(json.dumps({"jsonrpc": "2.0", "id": message.get("id") if isinstance(message, dict) else None,
"error": {"code": -32600, "message": "Invalid request"}}) + "\n")
output_stream.flush()
continue