Branch data Line data Source code
1 : : /** @file backendmanager_remoteprog.cc
2 : : * @brief BackendManager subclass for remoteprog databases.
3 : : */
4 : : /* Copyright (C) 2007,2008,2009 Olly Betts
5 : : * Copyright (C) 2008 Lemur Consulting Ltd
6 : : *
7 : : * This program is free software; you can redistribute it and/or
8 : : * modify it under the terms of the GNU General Public License as
9 : : * published by the Free Software Foundation; either version 2 of the
10 : : * License, or (at your option) any later version.
11 : : *
12 : : * This program is distributed in the hope that it will be useful,
13 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : : * GNU General Public License for more details.
16 : : *
17 : : * You should have received a copy of the GNU General Public License
18 : : * along with this program; if not, write to the Free Software
19 : : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 : : */
21 : :
22 : : #include <config.h>
23 : :
24 : : #include "backendmanager_remoteprog.h"
25 : :
26 : : #include <xapian.h>
27 : :
28 : : #include "utils.h"
29 : :
30 : : #ifdef HAVE_VALGRIND
31 : : # include <valgrind/memcheck.h>
32 : : #endif
33 : :
34 : : using namespace std;
35 : :
36 : : std::string
37 : 69 : BackendManagerRemoteProg::get_dbtype() const
38 : : {
39 : 69 : return "remoteprog_" + remote_type;
40 : : }
41 : :
42 : : Xapian::Database
43 : 537 : BackendManagerRemoteProg::do_get_database(const vector<string> & files)
44 : : {
45 : : // Default to a long (5 minute) timeout so that tests won't fail just
46 : : // because the host is slow or busy.
47 : 537 : return BackendManagerRemoteProg::get_remote_database(files, 300000);
48 : : }
49 : :
50 : : Xapian::WritableDatabase
51 : 204 : BackendManagerRemoteProg::get_writable_database(const string & name,
52 : : const string & file)
53 : : {
54 : 204 : string args = get_writable_database_args(name, file);
55 : :
56 : : #ifdef HAVE_VALGRIND
57 : : if (RUNNING_ON_VALGRIND) {
58 : : args.insert(0, XAPIAN_PROGSRV" ");
59 : : return Xapian::Remote::open_writable("./runsrv", args);
60 : : }
61 : : #endif
62 : 204 : return Xapian::Remote::open_writable(XAPIAN_PROGSRV, args);
63 : : }
64 : :
65 : : Xapian::Database
66 : 540 : BackendManagerRemoteProg::get_remote_database(const vector<string> & files,
67 : : unsigned int timeout)
68 : : {
69 : 540 : string args = get_remote_database_args(files, timeout);
70 : :
71 : : #ifdef HAVE_VALGRIND
72 : : if (RUNNING_ON_VALGRIND) {
73 : : args.insert(0, XAPIAN_PROGSRV" ");
74 : : return Xapian::Remote::open("./runsrv", args);
75 : : }
76 : : #endif
77 : 540 : return Xapian::Remote::open(XAPIAN_PROGSRV, args);
78 : : }
79 : :
80 : : Xapian::Database
81 : 24 : BackendManagerRemoteProg::get_writable_database_as_database()
82 : : {
83 : 24 : string args = get_writable_database_as_database_args();
84 : :
85 : : #ifdef HAVE_VALGRIND
86 : : if (RUNNING_ON_VALGRIND) {
87 : : args.insert(0, XAPIAN_PROGSRV" ");
88 : : return Xapian::Remote::open("./runsrv", args);
89 : : }
90 : : #endif
91 : 24 : return Xapian::Remote::open(XAPIAN_PROGSRV, args);
92 : : }
93 : :
94 : : Xapian::WritableDatabase
95 : 3 : BackendManagerRemoteProg::get_writable_database_again()
96 : : {
97 : 3 : string args = get_writable_database_again_args();
98 : :
99 : : #ifdef HAVE_VALGRIND
100 : : if (RUNNING_ON_VALGRIND) {
101 : : args.insert(0, XAPIAN_PROGSRV" ");
102 : : return Xapian::Remote::open_writable("./runsrv", args);
103 : : }
104 : : #endif
105 : 3 : return Xapian::Remote::open_writable(XAPIAN_PROGSRV, args);
106 : : }
|