// Output a ConfigValue from the specified ConfigSource to the stream void Configurator::config_get_command( string parameters, StreamOutput* stream ){ string source = shift_parameter(parameters); string setting = shift_parameter(parameters); if (setting == "") { // output live setting setting = source; source = ""; vector<uint16_t> setting_checksums = get_checksums( setting ); ConfigValue* cv = this->kernel->config->value(setting_checksums); string value = ""; if(cv->found){ value = cv->as_string(); } stream->printf( "live: %s is set to %s\r\n", setting.c_str(), value.c_str() ); } else { // output setting from specified source uint16_t source_checksum = get_checksum( source ); vector<uint16_t> setting_checksums = get_checksums( setting ); for(int i=0; i < this->kernel->config->config_sources.size(); i++){ if( this->kernel->config->config_sources[i]->is_named(source_checksum) ){ string value = this->kernel->config->config_sources[i]->read(setting_checksums); stream->printf( "%s: %s is set to %s\r\n", source.c_str(), setting.c_str(), value.c_str() ); break; } } } }
// Output a ConfigValue from the specified ConfigSource to the stream void Configurator::config_get_command( string parameters, StreamOutput *stream ) { string source = shift_parameter(parameters); string setting = shift_parameter(parameters); if (setting == "") { // output settings from the config-cache setting = source; source = ""; uint16_t setting_checksums[3]; get_checksums(setting_checksums, setting ); THEKERNEL->config->config_cache_load(); // need to load config cache first as it is unloaded after booting ConfigValue *cv = THEKERNEL->config->value(setting_checksums); if(cv != NULL && cv->found) { string value = cv->as_string(); stream->printf( "cached: %s is set to %s\r\n", setting.c_str(), value.c_str() ); } else { stream->printf( "cached: %s is not in config\r\n", setting.c_str()); } THEKERNEL->config->config_cache_clear(); } else { // output setting from specified source by parsing the config file uint16_t source_checksum = get_checksum( source ); uint16_t setting_checksums[3]; get_checksums(setting_checksums, setting ); for(unsigned int i = 0; i < THEKERNEL->config->config_sources.size(); i++) { if( THEKERNEL->config->config_sources[i]->is_named(source_checksum) ) { string value = THEKERNEL->config->config_sources[i]->read(setting_checksums); if(value.empty()) { stream->printf( "%s: %s is not in config\r\n", source.c_str(), setting.c_str() ); } else { stream->printf( "%s: %s is set to %s\r\n", source.c_str(), setting.c_str(), value.c_str() ); } break; } } } }