Exemple #1
0
 def __init__(self, engine):
     Network.Server.__init__(self)
     self.engine = engine
     self.sessions = {}
     self.broker = MessageBroker()
     self.world = WorldServer(self.engine, server = self)
     self.broker.addMessageHandler(self.world)
Exemple #2
0
class Server(Network.Server, Engine.Task):
    def __init__(self, engine):
        Network.Server.__init__(self)
        self.engine = engine
        self.sessions = {}
        self.broker = MessageBroker()
        self.world = WorldServer(self.engine, server=self)
        self.broker.addMessageHandler(self.world)

    def createConnection(self, sock):
        return ServerSession(self.engine, sock)

    def handleConnectionOpen(self, conn):
        Log.debug("Session #%d connected." % conn.id)
        self.sessions[conn.id] = conn
        self.engine.addTask(conn, synchronized=False)

    def handleConnectionClose(self, conn):
        Network.Server.handleConnectionClose(self, conn)
        self.engine.removeTask(conn)
        try:
            del self.sessions[conn.id]
        except KeyError:
            pass

    def broadcastMessage(self, message, meToo=True, ignore=[]):
        for id, session in self.sessions.items():
            if id in ignore: continue
            session.sendMessage(message)
        if meToo:
            session.handleMessage(0, message)

    def sendMessage(self, receiverId, message):
        try:
            self.sessions[receiverId].sendMessage(message)
        except IndexError:
            Log.warning("Tried to send message to nonexistent session #%d." %
                        receiverId)

    def run(self, ticks):
        Network.communicate()

    def stopped(self):
        self.close()
Exemple #3
0
class Server(Network.Server, Engine.Task):
    def __init__(self, engine):
        Network.Server.__init__(self)
        self.engine = engine
        self.sessions = {}
        self.broker = MessageBroker()
        self.world = WorldServer(self.engine, server = self)
        self.broker.addMessageHandler(self.world)

    def createConnection(self, sock):
        return ServerSession(self.engine, sock)

    def handleConnectionOpen(self, conn):
        Log.debug("Session #%d connected." % conn.id)
        self.sessions[conn.id] = conn
        self.engine.addTask(conn, synchronized = False)

    def handleConnectionClose(self, conn):
        Network.Server.handleConnectionClose(self, conn)
        self.engine.removeTask(conn)
        try:
            del self.sessions[conn.id]
        except KeyError:
            pass

    def broadcastMessage(self, message, meToo = True, ignore = []):
        for id, session in self.sessions.items():
            if id in ignore: continue
            session.sendMessage(message)
        if meToo:
            session.handleMessage(0, message)

    def sendMessage(self, receiverId, message):
        try:
            self.sessions[receiverId].sendMessage(message)
        except IndexError:
            Log.warning("Tried to send message to nonexistent session #%d." % receiverId)

    def run(self, ticks):
        Network.communicate()

    def stopped(self):
        self.close()