示例#1
0
    def _connect(self):
        """
            Connect to our sensor
            
            @param enable_sata: Will send the appropriate command to enable SATA
            extraction
        """

        if not self.connected:
            logger.debug("Connecting to disk sensor")

            try:
                # Open socket
                self.SOCK = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

                # Ensure that the socket is reusable
                self.SOCK.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

                # Bind to our port and listening for incoming packets
                self.SOCK.bind((self.bind_ip, self.bind_port))

                # Make our buffer much larger to help prevent packet loss
                self.SOCK.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF,
                                     G.UDP_RECV_BUFFER_SIZE)

                if self.use_threading:
                    logger.debug("Starting listener thread.")
                    # Start a process that will handle all of our reads
                    self.read_queue = multiprocessing.Queue()
                    self.packet_reader = PacketReaderUDP(
                        self.SOCK, self.read_queue)
                    self.packet_reader.start()

                self.connected = True

                return True

            except:
                logger.error("Could not connect to disk sensor")
                return False

        return True
示例#2
0
    def _connect(self):
        """
            Connect our socket. 
        """
        # Is the socket already open?
        if self._sock is None:
            # Open our socket
            try:
                logger.debug("Connecting to memory sensor. ")
                s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
                s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 100000)
                s.connect((self.sensor_ip, self.sensor_port))

                #                 if self.timeout is not None:
                #                     s.settimeout(self.timeout)

                if self.use_threading:
                    logger.debug("Starting listener thread.")
                    # Start a process that will handle all of our reads
                    self.read_queue = multiprocessing.Queue()
                    self.packet_reader = PacketReaderUDP(s, self.read_queue)
                    self.packet_reader.start()
                elif self.TIMEOUT is not None and self.TIMEOUT > 0:
                    s.settimeout(self.TIMEOUT)

            except:
                logger.error("Could not connect to memory sensor. (%s,%d)" %
                             (self.sensor_ip, self.sensor_port))
                self.connect_count += 1

                if self.connect_count > self.RETRIES:
                    raise socket.error("Could not connect to memory sensor.")

                return False

            # Save our socket
            self._sock = s

        return True
        self.connect_count = 0