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 |