def run(self): """ Run forever grabbing data from the VM and forwarding it to listening clients """ # Get our meta data which is always the first packet sent meta = MetaHeader() meta_data = self._conn.recv(len(meta)) if len(meta_data) == 0: logger.debug("VM Disconnected.") self._conn.close() return meta._unpack(meta_data) #logger.debug("Got meta data") #logger.debug(meta) # Store our filename for this VM # NOTE: We must strip the null chars off or comparisons will fail! filename = meta.filename.strip("\x00") # Create our sensor packet, and save its default size sensor_packet = DiskSensorPacket() sensor_header_size = len(sensor_packet) # Read packets forever while True: # Read and unpack our header header_data = self._conn.recv(sensor_header_size) if len(header_data) == 0: #logger.debug("VM Disconnected.") break sensor_packet._unpack(header_data) # Get the accompanying data try: sensor_packet.data = self._conn.recv(sensor_packet.size) except: print sensor_packet G.print_traceback() if len(sensor_packet.data) == 0: logger.debug("VM Disconnected.") self._conn.close() return if filename in disk_stream_dict: #logger.debug("Found %s in dict."%filename) for queue in disk_stream_dict[filename]: queue.put( ` sensor_packet `)
def run(self): """ Run forever grabbing data from the VM and forwarding it to listening clients """ # Get our meta data which is always the first packet sent meta = MetaHeader() meta_data = self._conn.recv(len(meta)) if len(meta_data) == 0: logger.debug("VM Disconnected.") self._conn.close() return meta._unpack(meta_data) #logger.debug("Got meta data") #logger.debug(meta) # Store our filename for this VM # NOTE: We must strip the null chars off or comparisons will fail! filename = meta.filename.strip("\x00") # Create our sensor packet, and save its default size sensor_packet = DiskSensorPacket() sensor_header_size = len(sensor_packet) # Read packets forever while True: # Read and unpack our header header_data = self._conn.recv(sensor_header_size) if len(header_data) == 0: #logger.debug("VM Disconnected.") break sensor_packet._unpack(header_data) # Get the accompanying data try: sensor_packet.data = self._conn.recv(sensor_packet.size) except: print sensor_packet G.print_traceback() if len(sensor_packet.data) == 0: logger.debug("VM Disconnected.") self._conn.close() return if filename in disk_stream_dict: #logger.debug("Found %s in dict."%filename) for queue in disk_stream_dict[filename]: queue.put(`sensor_packet`)