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
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