source: gsdl/trunk/src/protocol/nullproto.cpp@ 15450

Last change on this file since 15450 was 15450, checked in by mdewsnip, 16 years ago

(Untangling colservr/recpt) Created a new src/protocol directory, and moved the recptproto and nullproto classes into it.

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1/**********************************************************************
2 *
3 * nullproto.cpp --
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
6 * A component of the Greenstone digital library software
7 * from the New Zealand Digital Library Project at the
8 * University of Waikato, New Zealand.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 *********************************************************************/
25
26#include "nullproto.h"
27#include <assert.h>
28
29#include "filter.h"
30#include "browsefilter.h"
31#include "mgqueryfilter.h"
32#include "mgppqueryfilter.h"
33#include "mgsearch.h"
34#include "mgppsearch.h"
35#include "fileutil.h"
36
37nullproto::nullproto() {
38 cset = NULL;
39}
40
41nullproto::~nullproto() {
42}
43
44// add collection to collectset (this should not be called until after the
45// collectset has been added to the protocol with set_collectset()
46void nullproto::add_collection (const text_t &collection, void *recpt,
47 const text_t &gsdlhome, const text_t &gdbmhome) {
48
49 if (cset != NULL) {
50 this->cset->add_collection (collection, gsdlhome);
51 }
52}
53
54
55// remove_collection deletes the collection server of collection.
56// This only needs to be called if a collectionserver is to be
57// removed while the library is running. The destructor function
58// cleans up all collectservers when the program exits.
59void nullproto::remove_collection (const text_t &collection, ostream &logout) {
60 cset->remove_collection(collection, logout);
61}
62
63// this configure will configure each of the collection servers
64void nullproto::configure (const text_t &key, const text_tarray &cfgline,
65 comerror_t &err) {
66 // the naming of the collection should not be done here,
67 // it should be done just after the collection server has been
68 // created
69
70 // the protocol should not configure the collection set; it should be
71 // done direct to the collection server set
72 if (key == "gsdlhome" || key == "gdbmhome") {
73 cset->configure(key, cfgline);
74 }
75}
76
77// this init will configure and init each of the collection servers
78bool nullproto::init (comerror_t &err, ostream &logout) {
79 return cset->init(logout);
80}
81
82text_t nullproto::get_site_name (comerror_t &err) {
83 return "localhost";
84}
85
86text_t nullproto::get_protocol_name (comerror_t &err) {
87 return "nullproto";
88}
89
90
91void nullproto::get_collection_list (text_tarray &collist, comerror_t &err,
92 ostream &/*logout*/) {
93 cset->getCollectionList(collist);
94 err = noError; // no error is guaranteed - collection server shouldn't
95 // about receptionist error states, logout is irrelevant
96}
97
98void nullproto::has_collection (const text_t &collection, bool &hascollection,
99 comerror_t &err, ostream &/*logout*/) {
100 hascollection = (cset->getCollectServer(collection) != NULL);
101 err = noError;
102}
103
104void nullproto::ping (const text_t &collection, bool &wassuccess,
105 comerror_t &err, ostream &logout) {
106 collectserver *cserver = cset->getCollectServer(collection);
107 if (cserver != NULL) cserver->ping(wassuccess, err, logout);
108 else err = protocolError;
109}
110
111void nullproto::get_collectinfo (const text_t &collection,
112 ColInfoResponse_t &collectinfo,
113 comerror_t &err, ostream &logout) {
114 collectserver *cserver = cset->getCollectServer (collection);
115 if (cserver != NULL) cserver->get_collectinfo (collectinfo, err, logout);
116 else err = protocolError;
117}
118
119
120void nullproto::get_filterinfo (const text_t &collection,
121 InfoFiltersResponse_t &response,
122 comerror_t &err, ostream &logout) {
123 collectserver *cserver = cset->getCollectServer (collection);
124 if (cserver != NULL) cserver->get_filterinfo (response, err, logout);
125 else err = protocolError;
126}
127
128void nullproto::get_filteroptions (const text_t &collection,
129 const InfoFilterOptionsRequest_t &request,
130 InfoFilterOptionsResponse_t &response,
131 comerror_t &err, ostream &logout) {
132 collectserver *cserver = cset->getCollectServer (collection);
133 if (cserver != NULL) cserver->get_filteroptions (request, response, err, logout);
134 else err = protocolError;
135}
136
137void nullproto::filter (const text_t &collection,
138 FilterRequest_t &request,
139 FilterResponse_t &response,
140 comerror_t &err, ostream &logout) {
141 collectserver *cserver = cset->getCollectServer (collection);
142 if (cserver != NULL) cserver->filter (request, response, err, logout);
143 else err = protocolError;
144}
145
146void nullproto::get_document (const text_t &collection,
147 const DocumentRequest_t &request,
148 DocumentResponse_t &response,
149 comerror_t &err, ostream &logout) {
150 collectserver *cserver = cset->getCollectServer (collection);
151 if (cserver != NULL) cserver->get_document (request, response, err, logout);
152 else err = protocolError;
153}
154
155void nullproto::is_searchable (const text_t &collection, bool &issearchable,
156 comerror_t &err, ostream &logout) {
157 issearchable = false;
158 collectserver *cserver = cset->getCollectServer (collection);
159 if (cserver != NULL) cserver->is_searchable (issearchable, err, logout);
160 else err = protocolError;
161}
Note: See TracBrowser for help on using the repository browser.