| Conditions | 7 |
| Total Lines | 38 |
| Code Lines | 29 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | import errno |
||
| 20 | def fetch_new_messages(self): |
||
| 21 | if len(self.send_message): |
||
| 22 | message = self.send_message.encode("utf-8") |
||
| 23 | message_header = f"{len(message) :< {HEADER_LENGTH}}".encode("utf-8") |
||
| 24 | self.socket.send(message_header + message) |
||
| 25 | self.send_message = '' |
||
| 26 | |||
| 27 | new_messages = [] |
||
| 28 | |||
| 29 | try: |
||
| 30 | while True: |
||
| 31 | username_header = self.socket.recv(HEADER_LENGTH) |
||
| 32 | if not len(username_header): |
||
| 33 | print("Connection closed by the server") |
||
| 34 | sys.exit() |
||
| 35 | |||
| 36 | username_length = int(username_header.decode("utf-8").strip()) |
||
| 37 | username = self.socket.recv(username_length).decode("utf-8") |
||
| 38 | |||
| 39 | message_header = self.socket.recv(HEADER_LENGTH) |
||
| 40 | message_length = int(message_header.decode("utf-8").strip()) |
||
| 41 | message = self.socket.recv(message_length).decode("utf-8") |
||
| 42 | |||
| 43 | new_messages.append({ |
||
| 44 | 'author': username, |
||
| 45 | 'content': message |
||
| 46 | }) |
||
| 47 | |||
| 48 | except IOError as e: |
||
| 49 | if e.errno not in [errno.EAGAIN, errno.EWOULDBLOCK]: |
||
| 50 | print("reading error", str(e)) |
||
| 51 | sys.exit() |
||
| 52 | |||
| 53 | return new_messages |
||
| 54 | |||
| 55 | except Exception as e: |
||
| 56 | print("general error", str(e)) |
||
| 57 | sys.exit() |
||
| 58 |