Beispiel #1
0
 def get_next_item(self):
     try:
         data = self.sock.recv(self.buffer_size)
         if not data:
             self.sock.close()
             self.sock = None
             return False
         else:
             hydra_logger.debug('Receive %s: %d bytes' %
                                 (self.name, len(data)))
             self.notify_all(data)
             return True
     except socket.timeout:
         return True
Beispiel #2
0
    def get_next_item(self):
        try:
            self.sock.settimeout(self.sock_timeout)  # restore the timeout
            header_bytes = b''
            if self.tcp_header.header_length > 0:
                header_bytes = self.sock.recv(self.tcp_header.header_length)
                if not header_bytes:
                    self.sock.close()
                    self.sock = None
                    return False
            bytes_to_read = self.tcp_header.get_message_size(header_bytes)
            bytes_read = 0
            data = b''

            # Do not timeout between header and data
            self.sock.settimeout(None)

            while (bytes_read < bytes_to_read) and (not self.stopped.is_set()):
                tmp_data = self.sock.recv(bytes_to_read - bytes_read)
                if not tmp_data:
                    self.sock.close()
                    self.sock = None
                    return False
                else:
                    bytes_read += len(tmp_data)
                    data += tmp_data
            if bytes_read == bytes_to_read:
                if self.tcp_header.header_length > 0:
                    if self.keep_header_data:
                        data = header_bytes + data
                hydra_logger.debug('Receive %s: %d bytes' %
                                    (self.name, len(data)))
                self.notify_all(data)
            self.sock.settimeout(self.sock_timeout)  # restore the timeout
            return True
        except socket.timeout:
            return True
        except ConnectionError:
            self.sock.close()
            self.sock = None
            return False
Beispiel #3
0
 def run(self):
     hydra_logger.debug('Queue %s - running.' % (self.name))
     while not self.stopped.is_set():
         hydra_logger.debug('Queue %s - retrieving...' % (self.name))
         try:
             item = self.queue.get(timeout=1.0)
             hydra_logger.debug('Queue %s - got: %s' %
                                (self.name, str(item)))
             self.notify_all(item)
         except Empty:
             pass
Beispiel #4
0
 def notify(self, publisher, item):
     hydra_logger.debug('Queue %s - put: %s' % (self.name, str(item)))
     self.queue.put(item)
Beispiel #5
0
 def notify(self, publisher, item):
     if not self.send_to_ip is None:
         if not self.sock is None:
             hydra_logger.debug('Send %s: %d bytes' %
                                 (self.name, len(item)))
             self.sock.sendto(item, (self.send_to_ip, self.send_to_port))
Beispiel #6
0
 def notify(self, publisher, item):
     if not self.sock is None:
         hydra_logger.debug('Send %s: %d bytes' % (self.name, len(item)))
         self.sock.send(item)