Esempio n. 1
0
    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
Esempio n. 2
0
    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