def _build_eng_telemetered_parser(self, parser_state, infile, data_key): """ Build and return the specified parser as indicated by the data_key. """ config = self._parser_config.get(data_key) config.update({ DataSetDriverConfigKeys.PARTICLE_MODULE: 'mi.dataset.parser.glider', DataSetDriverConfigKeys.PARTICLE_CLASS: [EngineeringMetadataDataParticle, EngineeringTelemeteredDataParticle, EngineeringScienceTelemeteredDataParticle] }) log.trace("EngineeringDataSetDriver._build_eng_telemetered_parser(): " "parser_state= %s, input file= %s, data_key= %s", parser_state, infile, data_key) parser = GliderEngineeringParser(config, parser_state, infile, lambda state, ingested: self._save_parser_state(state, data_key, ingested), self._data_callback, self._sample_exception_callback) return parser
def process(self): """ Process a file by opening the file and instantiating a parser and driver """ log = get_logger() with open(self._source_file_path, "rb") as file_handle: def exception_callback(exception): log.debug("Exception %s", exception) self._particle_data_hdlr_obj.setParticleDataCaptureFailure() # essentially comment out the state and data callbacks by inserting # lambda with None functions, so it doesn't complain about not being # able to pass arguments parser = GliderEngineeringParser(self._parser_config, None, file_handle, lambda state, ingested: None, lambda data: None, exception_callback) # instantiate the driver driver = DataSetDriver(parser, self._particle_data_hdlr_obj) # start the driver processing the file driver.processFileStream() return self._particle_data_hdlr_obj