def _build_parser(self, parser_state, stream_in, data_key): """ Build the requested parser based on the data key @param parser_state starting parser state to pass to parser @param stream_in Handle of open file to pass to parser @param stream_in Filename string to pass to parser @param data_key Key to determine which parser type is built """ # # Build the telemetered parser if requested. # if data_key == DataTypeKey.CTDMO_GHQR_SIO_MULE: config = self._parser_config[data_key] config.update({ DataSetDriverConfigKeys.PARTICLE_MODULE: 'mi.dataset.parser.ctdmo', DataSetDriverConfigKeys.PARTICLE_CLASS: [ 'CtdmoTelemeteredInstrumentDataParticle', 'CtdmoTelemeteredOffsetDataParticle' ] }) log.debug("MYCONFIG Telemetered: CONFIG %s, STATE %s", config, parser_state) parser = CtdmoTelemeteredParser( config, stream_in, parser_state, lambda state: self._save_parser_state(state, data_key), self._data_callback, self._sample_exception_callback) if parser is None: raise ConfigurationException( 'Unable to build CTDMO Telemetered Parser') # # Build the recovered parser for CO data if requested. # elif data_key == DataTypeKey.CTDMO_GHQR_CO: config = self._parser_config[data_key] config.update({ DataSetDriverConfigKeys.PARTICLE_MODULE: 'mi.dataset.parser.ctdmo', DataSetDriverConfigKeys.PARTICLE_CLASS: 'CtdmoRecoveredOffsetDataParticle' }) log.debug("MYCONFIG CO Recovered:CONFIG %s, STATE %s", config, parser_state) parser = CtdmoRecoveredCoParser( config, stream_in, parser_state, lambda state, ingested: self._save_parser_state( state, data_key, ingested), self._data_callback, self._sample_exception_callback) if parser is None: raise ConfigurationException( 'Unable to build CTDMO Recovered CO Parser') # # Build the recovered parser for CT data if requested. # elif data_key == DataTypeKey.CTDMO_GHQR_CT: config = self._parser_config[data_key] config.update({ DataSetDriverConfigKeys.PARTICLE_MODULE: 'mi.dataset.parser.ctdmo', DataSetDriverConfigKeys.PARTICLE_CLASS: 'CtdmoRecoveredInstrumentDataParticle' }) log.debug("MYCONFIG CT Recovered: CONFIG %s, STATE %s", config, parser_state) parser = CtdmoRecoveredCtParser( config, stream_in, parser_state, lambda state, ingested: self._save_parser_state( state, data_key, ingested), self._data_callback, self._sample_exception_callback) if parser is None: raise ConfigurationException( 'Unable to build CTDMO Recovered CT Parser') # # Not one of the keys we recognize? # No parser for you! # else: raise ConfigurationException( 'CTDMO Parser configuration incorrect %s', data_key) return parser