added first version of query-rewrite filter, only empty shell. functionality missing
[metaproxy-moved-to-github.git] / src / filter_query_rewrite.cpp
1 /* $Id: filter_query_rewrite.cpp,v 1.1 2006-01-19 12:18:09 marc Exp $
2    Copyright (c) 2005, Index Data.
3
4 %LICENSE%
5  */
6
7
8 #include "config.hpp"
9 #include "filter.hpp"
10 #include "package.hpp"
11
12 //#include <boost/thread/mutex.hpp>
13
14 #include "util.hpp"
15 #include "filter_query_rewrite.hpp"
16
17 #include <yaz/zgdu.h>
18
19 namespace yf = yp2::filter;
20
21 namespace yp2 {
22     namespace filter {
23         class QueryRewrite::Rep {
24             friend class QueryRewrite;
25             int dummy;
26         };
27     }
28 }
29
30 yf::QueryRewrite::QueryRewrite() : m_p(new Rep)
31 {
32     m_p->dummy = 1;
33 }
34
35 yf::QueryRewrite::~QueryRewrite()
36 {  // must have a destructor because of boost::scoped_ptr
37 }
38
39 void yf::QueryRewrite::process(yp2::Package &package) const
40 {
41
42     if (package.session().is_closed())
43     {
44         std::cout << "Got Close.\n";
45     }
46     
47     Z_GDU *gdu = package.request().get();
48     
49     if (gdu && gdu->which == Z_GDU_Z3950 && gdu->u.z3950->which ==
50         Z_APDU_initRequest)
51     {
52         std::cout << "Got Z3950 Init PDU\n";         
53         //Z_InitRequest *req = gdu->u.z3950->u.initRequest;
54         //package.request() = gdu;
55     } 
56     else if (gdu && gdu->which == Z_GDU_Z3950 && gdu->u.z3950->which ==
57              Z_APDU_searchRequest)
58     {
59         std::cout << "Got Z3950 Search PDU\n";   
60         //Z_SearchRequest *req = gdu->u.z3950->u.searchRequest;
61         //package.request() = gdu;
62     } 
63     else if (gdu && gdu->which == Z_GDU_Z3950 && gdu->u.z3950->which ==
64              Z_APDU_scanRequest)
65     {
66         std::cout << "Got Z3950 Scan PDU\n";   
67         //Z_ScanRequest *req = gdu->u.z3950->u.scanRequest;
68         //package.request() = gdu;
69     } 
70     package.move();
71 }
72
73 static yp2::filter::Base* filter_creator()
74 {
75     return new yp2::filter::QueryRewrite;
76 }
77
78 extern "C" {
79     struct yp2_filter_struct yp2_filter_query_rewrite = {
80         0,
81         "query-rewrite",
82         filter_creator
83     };
84 }
85
86 extern "C" {
87     extern struct yp2_filter_struct yp2_filter_query_rewrite;
88 }
89
90
91 /*
92  * Local variables:
93  * c-basic-offset: 4
94  * indent-tabs-mode: nil
95  * c-file-style: "stroustrup"
96  * End:
97  * vim: shiftwidth=4 tabstop=8 expandtab
98  */