-/* $Id: filter_backend_test.cpp,v 1.4 2005-10-25 21:32:01 adam Exp $
+/* $Id: filter_backend_test.cpp,v 1.12 2006-01-04 11:55:31 adam Exp $
Copyright (c) 2005, Index Data.
%LICENSE%
#include "filter.hpp"
#include "router.hpp"
#include "package.hpp"
+#include "util.hpp"
+#include "filter_backend_test.hpp"
-#include <boost/thread/mutex.hpp>
+#include <stdexcept>
+#include <list>
+#include <map>
+#include <iostream>
-#include "filter_backend_test.hpp"
+#include <boost/thread/mutex.hpp>
#include <yaz/zgdu.h>
#include <yaz/log.h>
#include <yaz/otherinfo.h>
#include <yaz/diagbib1.h>
-#include <list>
-#include <map>
-#include <iostream>
-
namespace yf = yp2::filter;
namespace yp2 {
}
}
-yf::Backend_test::Backend_test() {
- m_p = new Backend_test::Rep;
+using namespace yp2;
+
+yf::Backend_test::Backend_test() : m_p(new Backend_test::Rep) {
m_p->m_support_named_result_sets = false;
}
yf::Backend_test::~Backend_test() {
- delete m_p;
}
void yf::Backend_test::process(Package &package) const
{
Z_APDU *apdu_req = gdu->u.z3950;
Z_APDU *apdu_res = 0;
- ODR odr = odr_createmem(ODR_ENCODE);
+ yp2::odr odr;
if (apdu_req->which != Z_APDU_initRequest &&
- !m_p->m_sessions.active(package.session()))
+ !m_p->m_sessions.exist(package.session()))
{
- apdu_res = zget_APDU(odr, Z_APDU_close);
- *apdu_res->u.close->closeReason = Z_Close_protocolError;
- apdu_res->u.close->diagnosticInformation =
- odr_strdup(odr, "no init for filter_backend_test");
-
+ apdu_res = odr.create_close(Z_Close_protocolError,
+ "no init for filter_backend_test");
package.session().close();
}
else if (apdu_req->which == Z_APDU_initRequest)
}
else
{
- apdu_res = zget_APDU(odr, Z_APDU_close);
- *apdu_res->u.close->closeReason = Z_Close_protocolError;
- apdu_res->u.close->diagnosticInformation =
- odr_strdup(odr, "bad APDU in filter_backend_test");
-
+ apdu_res = odr.create_close(Z_Close_protocolError,
+ "bad APDU in filter_backend_test");
package.session().close();
}
if (apdu_res)
package.response() = apdu_res;
- odr_destroy(odr);
}
if (package.session().is_closed())
m_p->m_sessions.release(package.session());
}
+static yp2::filter::Base* filter_creator()
+{
+ return new yp2::filter::Backend_test;
+}
+
+extern "C" {
+ struct yp2_filter_struct yp2_filter_backend_test = {
+ 0,
+ "backend_test",
+ filter_creator
+ };
+}
+
/*
* Local variables: