Interactive server console
This commit is contained in:
parent
f1152cfb25
commit
8e59db2ad6
|
@ -5,9 +5,9 @@ import textwrap
|
||||||
|
|
||||||
def main(args: argparse.Namespace) -> int:
|
def main(args: argparse.Namespace) -> int:
|
||||||
from sampy.network.protocol import Protocol
|
from sampy.network.protocol import Protocol
|
||||||
from sampy.server import Server
|
from sampy.server import InteractiveServer
|
||||||
|
|
||||||
server = Server(Protocol)
|
server = InteractiveServer(Protocol)
|
||||||
server.start()
|
server.start()
|
||||||
|
|
||||||
asyncio.get_event_loop().run_forever()
|
asyncio.get_event_loop().run_forever()
|
||||||
|
|
|
@ -34,6 +34,9 @@ class UDPProtocol:
|
||||||
def connection_made(self, transport: asyncio.transports.DatagramTransport):
|
def connection_made(self, transport: asyncio.transports.DatagramTransport):
|
||||||
self.transport = transport
|
self.transport = transport
|
||||||
|
|
||||||
|
def connection_lost(self, exc: Exception | None):
|
||||||
|
pass
|
||||||
|
|
||||||
def datagram_received(self, data: bytes, addr: Tuple[str, int]):
|
def datagram_received(self, data: bytes, addr: Tuple[str, int]):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@ -61,3 +64,20 @@ class Server(UDPProtocol):
|
||||||
@property
|
@property
|
||||||
def players(self) -> list[Player]: # TODO
|
def players(self) -> list[Player]: # TODO
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
class InteractiveServer(Server):
|
||||||
|
def __init__(self, protocol: Type[Protocol], config: Config = Config()):
|
||||||
|
super().__init__(protocol=protocol, config=config)
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
loop.create_task(self.run_input_loop())
|
||||||
|
|
||||||
|
async def run_input_loop(self):
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
while True:
|
||||||
|
command = await loop.run_in_executor(None, input)
|
||||||
|
|
||||||
|
if command in ("quit", "exit", "stop"):
|
||||||
|
self.stop()
|
||||||
|
loop.stop()
|
||||||
|
return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user