+void yf::Z3950Client::configure(const xmlNode *ptr, bool test_only,
+ const char *path)
+{
+ for (ptr = ptr->children; ptr; ptr = ptr->next)
+ {
+ if (ptr->type != XML_ELEMENT_NODE)
+ continue;
+ if (!strcmp((const char *) ptr->name, "timeout"))
+ {
+ m_p->m_general_timeout_sec = mp::xml::get_int(ptr, 30);
+ }
+ else if (!strcmp((const char *) ptr->name, "connect-timeout"))
+ {
+ m_p->m_connect_timeout_sec = mp::xml::get_int(ptr, 10);
+ }
+ else if (!strcmp((const char *) ptr->name, "init-timeout"))
+ {
+ m_p->m_init_timeout_sec = mp::xml::get_int(ptr, 10);
+ }
+ else if (!strcmp((const char *) ptr->name, "default_target"))
+ {
+ m_p->m_default_target = mp::xml::get_text(ptr);
+ }
+ else if (!strcmp((const char *) ptr->name, "force_target"))
+ {
+ m_p->m_force_target = mp::xml::get_text(ptr);
+ }
+ else if (!strcmp((const char *) ptr->name, "max-sockets"))
+ {
+ m_p->m_max_sockets = mp::xml::get_int(ptr, 0);
+ }
+ else if (!strcmp((const char *) ptr->name, "force_close"))
+ {
+ m_p->m_force_close = mp::xml::get_bool(ptr, 0);
+ }
+ else if (!strcmp((const char *) ptr->name, "client_ip"))
+ {
+ m_p->m_client_ip = mp::xml::get_bool(ptr, 0);
+ }
+ else if (!strcmp((const char *) ptr->name, "charset"))
+ {
+ m_p->m_charset = mp::xml::get_text(ptr);
+ }
+ else if (!strcmp((const char *) ptr->name, "bind_host"))
+ {
+ m_p->m_bind_host = mp::xml::get_bool(ptr, 0);
+ }
+ else
+ {
+ throw mp::filter::FilterException("Bad element "
+ + std::string((const char *)
+ ptr->name));
+ }
+ }
+}
+
+static mp::filter::Base* filter_creator()
+{
+ return new mp::filter::Z3950Client;
+}
+
+extern "C" {
+ struct metaproxy_1_filter_struct metaproxy_1_filter_z3950_client = {
+ 0,
+ "z3950_client",
+ filter_creator
+ };
+}