예제 #1
0
 def handle_data(self, addr, data):
     (host, port) = addr
     self._logger.debug("{}:{}/UDP<<".format(host, port))
     if self._session and self._session.is_stun_message(data):
         self._logger.debug("Handling using turn session")
         response = STUNMessage.from_bytes(data)
         self._session.handle_response(response)
     else:
         self._logger.debug("Emitting data, len: {}".format(len(data)))
         self._data_cb((host, port), data)
예제 #2
0
        """
        Write directly to the TURN relay
        :param data:
        :return:
        """
        self.writeDatagram(data, self.turn_address, self.turn_port)

    def sendto(self, data, address):
        if address in self.bindings.values():
            self._logger.debug("Sending to {} through relay".format(address))
            self._session.send_to(data, address)
        else:
            host, port = address
            self._logger.debug("Sending to {} directly".format(address))
            self.writeDatagram(data, QHostAddress(host), port)

    def handle_data(self, (host, port), data):
        self._logger.debug("{}:{}/UDP<<".format(host, port))
        if self._session and self._session.is_stun_message(data):
            self._logger.debug("Handling using turn session")
            response = STUNMessage.from_bytes(data)
            self._session.handle_response(response)
        else:
            self._logger.debug("Emitting data, len: {}".format(len(data)))
            self._data_cb((host, port), data)

    def _readyRead(self):
        while self.hasPendingDatagrams():
            data, host, port = self.readDatagram(self.pendingDatagramSize())
            self.handle_data((host.toString(), int(port)), data)
예제 #3
0
        """
        Write directly to the TURN relay
        :param data:
        :return:
        """
        self.writeDatagram(data, self.turn_address, self.turn_port)

    def sendto(self, data, address):
        if address in self.bindings.values():
            self._logger.debug("Sending to {} through relay".format(address))
            self._session.send_to(data, address)
        else:
            host, port = address
            self._logger.debug("Sending to {} directly".format(address))
            self.writeDatagram(data, QHostAddress(host), port)

    def handle_data(self, (host, port), data):
        self._logger.debug("{}:{}/UDP<<".format(host, port))
        if self._session and self._session.is_stun_message(data):
            self._logger.debug("Handling using turn session")
            response = STUNMessage.from_bytes(data)
            self._session.handle_response(response)
        else:
            self._logger.debug("Emitting data, len: {}".format(len(data)))
            self._data_cb((host, port), data)

    def _readyRead(self):
        while self.hasPendingDatagrams():
            data, host, port = self.readDatagram(self.pendingDatagramSize())
            self.handle_data((host.toString(), int(port)), data)