Read available events from socket (non-blocking)
(sock: socket.socket)
| 81 | |
| 82 | |
| 83 | def read_events(sock: socket.socket) -> list: |
| 84 | """Read available events from socket (non-blocking)""" |
| 85 | events = [] |
| 86 | buffer = "" |
| 87 | |
| 88 | try: |
| 89 | while True: |
| 90 | data = sock.recv(4096) |
| 91 | if not data: |
| 92 | break |
| 93 | buffer += data.decode() |
| 94 | |
| 95 | while "\n" in buffer: |
| 96 | line, buffer = buffer.split("\n", 1) |
| 97 | if line.strip(): |
| 98 | try: |
| 99 | events.append(json.loads(line)) |
| 100 | except json.JSONDecodeError: |
| 101 | pass |
| 102 | except BlockingIOError: |
| 103 | pass |
| 104 | except: |
| 105 | pass |
| 106 | |
| 107 | return events |
| 108 | |
| 109 | |
| 110 | def format_tokens(n: int) -> str: |