forked from AY2425S2-CG4002-Team-8/External-comms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelay_server.py
More file actions
42 lines (36 loc) · 1.22 KB
/
relay_server.py
File metadata and controls
42 lines (36 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import asyncio
from tcp.tcp_server import TcpServer
from logger import get_logger
logger = get_logger(__name__)
class RelayServer:
def __init__(self, secret_key, host, port, read_buffer, send_buffer):
self.secret_key = secret_key
self.host = host
self.port = port
# Queues for handling messages
self.read_buffer = read_buffer
self.send_buffer = send_buffer
# TCP Server Instance
self.tcp_server = TcpServer(
secret_key=self.secret_key,
host=self.host,
port=self.port,
read_buffer=self.read_buffer,
send_buffer=self.send_buffer
)
async def start(self):
"""
Starts the RelayServer by initializing and running the TCP server.
"""
try:
logger.info(f"Starting RelayServer on {self.host}:{self.port}")
await self.tcp_server.start()
except Exception as e:
logger.error(f"Failed to start RelayServer on {self.host}:{self.port}: {e}")
async def run(self):
"""
Runs both the TCP server and message relaying in parallel.
"""
await asyncio.gather(
self.start(),
)