Exemplo n.º 1
0
    def time_listener(self, message: IXPFile = None):
        sH = message.get_info("hours")
        sM = message.get_info("minutes")
        sS = message.get_info("seconds")

        iH = int(sH)
        iM = int(sM)
        iS = int(sS)

        needsDateUpdate = False

        if self.__hours == -1:
            needsDateUpdate = True

        if self.__hours != 0 and iH == 0:
            needsDateUpdate = True

        if needsDateUpdate:
            server = Networking.instance.get_server()
            con = ClockNetworking.instance.get_connection()
            request = IXPFile()
            request.set_network_function("com.projectgame.clock.clock.getdate")
            server.ixp_request_async(con, request, lambda ixpFile: self.__date_listener(ixpFile))

        self.__set_time(hours=iH, minutes=iM, seconds=iS)
Exemplo n.º 2
0
    def __message_received(self, connection: ConnectionIdentifier, ixpFile: IXPFile):
        for identifier in self.__asyncListeners:
            if connection != self.__asyncListenersConnections[identifier]:
                continue

            if self.__asyncListenersFunctions[identifier] != ixpFile.get_network_function():
                continue

            if self.__asyncListenersTypes[identifier] == self.__ASYNC_LISTENER_TYPE_IXP:
                self.__asyncListenersCallbacks[identifier](ixpFile)
            elif self.__asyncListenersTypes[identifier] == self.__ASYNC_LISTENER_TYPE_BOO:
                pass
            elif self.__asyncListenersTypes[identifier] == self.__ASYNC_LISTENER_TYPE_INT:
                pass
            elif self.__asyncListenersTypes[identifier] == self.__ASYNC_LISTENER_TYPE_STR:
                pass

            self.__asyncListeners.remove(identifier)
            del self.__asyncListenersCallbacks[identifier]
            del self.__asyncListenersConnections[identifier]
            del self.__asyncListenersFunctions[identifier]
            del self.__asyncListenersTypes[identifier]
            return

        for identifier in self.__listeners:
            if connection != self.__listenerConnections[identifier]:
                continue

            func = self.__listenerFunctions[identifier]

            if func == ixpFile.get_network_function():
                self.__listenerCallbacks[identifier](ixpFile)
Exemplo n.º 3
0
    def start(self):
        server = Networking.instance.get_server()
        con = ClockNetworking.instance.get_connection()
        server.register_message_listener(con, "clock_time_listener", self.time_listener)

        request = IXPFile()
        request.set_network_function("com.projectgame.clock.clock.registertotimeservice")
        request.add_info("functionName", "clock_time_listener")
        server.no_response_request(con, request)
Exemplo n.º 4
0
    def __date_listener(self, ixpFile: IXPFile):
        sY = ixpFile.get_info("year")
        sM = ixpFile.get_info("month")
        sD = ixpFile.get_info("day")
        sW = ixpFile.get_info("weekday")

        iY = int(sY)
        iM = int(sM)
        iD = int(sD)
        iW = int(sW)

        if iW == -1:
            iW = 6

        for listener in self.__dateCallbacks:
            listener(year=iY, month=iM, day=iD, weekday=iW)
Exemplo n.º 5
0
    def start(self):
        server = Networking.instance.get_server()
        con = ClockNetworking.instance.get_connection()
        server.register_message_listener(con, self.__FUNCTION_TIMER_STARTED, self.__network_timer_started)
        server.register_message_listener(con, self.__FUNCTION_TIMER_STOPPED, self.__network_timer_stopped)
        server.register_message_listener(con, self.__FUNCTION_TIMER_UPDATED, self.__network_timer_updated)
        server.register_message_listener(con, self.__FUNCTION_TIMER_CALLED, self.__network_timer_called)

        request = IXPFile()
        request.set_network_function("com.projectgame.clock.timer.registertotimerservice")
        request.add_info("startedFunction", self.__FUNCTION_TIMER_STARTED)
        request.add_info("stoppedFunction", self.__FUNCTION_TIMER_STOPPED)
        request.add_info("updatedFunction", self.__FUNCTION_TIMER_UPDATED)
        request.add_info("calledFunction", self.__FUNCTION_TIMER_UPDATED)
        server.no_response_request(con, request)
Exemplo n.º 6
0
    def ixp_request_async(self, connection: ConnectionIdentifier, request: IXPFile, callback):
        """
            override of superclass method
        """

        identifier = AsyncListenerIdentifier()
        self.__asyncListeners.append(identifier)
        self.__asyncListenersCallbacks[identifier] = callback
        self.__asyncListenersConnections[identifier] = connection
        self.__asyncListenersFunctions[identifier] = request.get_network_function()
        self.__asyncListenersTypes[identifier] = self.__ASYNC_LISTENER_TYPE_IXP

        socket = self.__connections[connection]  # type: BufferedIXPSocket
        socket.send(request)
Exemplo n.º 7
0
 def send(self, ixpFile: IXPFile):
     self.__client.write(ixpFile.get_xml())