59 lines
No EOL
1.3 KiB
Python
59 lines
No EOL
1.3 KiB
Python
import Logging
|
|
import DataTypes
|
|
|
|
from .AsyncServer import Server
|
|
from .Broadcast import Broadcast
|
|
|
|
class Command:
|
|
def __init__(self):
|
|
self.setup()
|
|
|
|
def setup(self):
|
|
pass
|
|
|
|
def run(self, data, handler):
|
|
pass
|
|
|
|
|
|
class Info(Command):
|
|
def run(self, data, handler):
|
|
handler.sock.send("Currently connected: %d" % len(handler.broadcast.socks))
|
|
|
|
|
|
|
|
|
|
|
|
class SublimeHandler(Server.Handler):
|
|
def setup(self):
|
|
Logging.info("Handler for '%s' initalised." % self.info[0])
|
|
self.commands = self.kwargs.pop("commands")
|
|
self.broadcast = self.kwargs.pop("broadcast")
|
|
self.broadcast.add(self.sock)
|
|
self.current_prefix = None
|
|
|
|
|
|
|
|
def handle(self, data):
|
|
if type(data) == dict:
|
|
data_keys = list(data.keys())
|
|
if len(data_keys) == 1:
|
|
if data_keys[0] in self.commands:
|
|
self.current_prefix = data_keys[0]
|
|
self.commands[self.current_prefix].run(data[data_keys[0]], self)
|
|
else:
|
|
if self.current_prefix != None:
|
|
self.commands[self.current_prefix].run(data, self)
|
|
else:
|
|
if self.current_prefix != None:
|
|
self.commands[self.current_prefix].run(data, self)
|
|
|
|
|
|
def finish(self):
|
|
self.broadcast.remove(self.sock)
|
|
Logging.info("%s disconnected." % self.info[0])
|
|
|
|
|
|
|
|
|
|
server = Server(("127.0.0.1", 3077), SublimeHandler,
|
|
{"commands" : {"info" : Info()}, "broadcast" : Broadcast()}) |