From: Marcin Siodelski Date: Thu, 31 Jan 2019 08:52:42 +0000 (+0100) Subject: [#429,!217] Use new function of StampedValue to parse global parameters. X-Git-Tag: 429-Updated-StampedValue-to-support-reals_base~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7563290101c228dfd6efb8661c48066829afc84b;p=thirdparty%2Fkea.git [#429,!217] Use new function of StampedValue to parse global parameters. --- diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc index 0b7ae95e71..7a182eac88 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc @@ -160,42 +160,14 @@ public: [¶meters] (MySqlBindingCollection& out_bindings) { if (!out_bindings[1]->getString().empty()) { - std::string name = out_bindings[1]->getString(); - std::string value = out_bindings[2]->getString(); - uint8_t parameter_type = out_bindings[3]->getInteger(); - - StampedValuePtr stamped_value; - - try { - switch (static_cast(parameter_type)) { - case Element::string: - stamped_value = StampedValue::create(name, value); - break; - - case Element::integer: - stamped_value = StampedValue::create(name, - Element::create(boost::lexical_cast(value))); - break; - - case Element::boolean: - stamped_value = StampedValue::create(name, - Element::create((value == "1") ? true : false)); - break; - - case Element::real: - stamped_value = StampedValue::create(name, - Element::create(boost::lexical_cast(value))); - break; - - default: - isc_throw(TypeError, "invalid type of the parameter '" - << name << "' fetched from the database"); - } - } catch (const boost::bad_lexical_cast& ex) { - isc_throw(BadValue, "actual type of the value '" << name - << "' is different than marked in the database"); - } + // Convert value read as string from the database to the actual + // data type known from the database as binding #3. + StampedValuePtr stamped_value = + StampedValue::create(out_bindings[1]->getString(), + out_bindings[2]->getString(), + static_cast + (out_bindings[3]->getInteger())); stamped_value->setModificationTime(out_bindings[4]->getTimestamp()); parameters.insert(stamped_value);