Branch data Line data Source code
1 : : /** @file backendmanager_remote.cc
2 : : * @brief BackendManager subclass for remote databases.
3 : : */
4 : : /* Copyright (C) 2006,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 : : #include "backendmanager_remote.h"
24 : : #include "str.h"
25 : : #include <cstdlib>
26 : : #include <string>
27 : :
28 : 6 : BackendManagerRemote::BackendManagerRemote(const std::string & remote_type_)
29 : 6 : : remote_type(remote_type_)
30 : : {
31 [ # # # # ]: 6 : if (!(false
[ # # ]
[ # # + + ]
[ + + ][ - + ]
[ - + ]
32 : : #ifdef XAPIAN_HAS_BRASS_BACKEND
33 : : || remote_type == "brass"
34 : : #endif
35 : : #ifdef XAPIAN_HAS_CHERT_BACKEND
36 : : || remote_type == "chert"
37 : : #endif
38 : : #ifdef XAPIAN_HAS_FLINT_BACKEND
39 : : || remote_type == "flint"
40 : : #endif
41 : : )) {
42 : 0 : throw ("Unknown backend type \"" + remote_type + "\" specified for remote database");
43 : : }
44 : 6 : }
45 : :
46 : : std::string
47 : 408 : BackendManagerRemote::get_writable_database_args(const std::string & name,
48 : : const std::string & file)
49 : : {
50 : 408 : last_wdb_name = name;
51 : :
52 : : // Default to a long (5 minute) timeout so that tests won't fail just
53 : : // because the host is slow or busy.
54 : 408 : std::string args = "-t300000 --writable ";
55 : :
56 : : #ifdef XAPIAN_HAS_BRASS_BACKEND
57 [ + + ]: 408 : if (remote_type == "brass") {
58 : 138 : (void)getwritedb_brass(name, std::vector<std::string>(1, file));
59 : 138 : args += ".brass/";
60 : : }
61 : : #endif
62 : : #ifdef XAPIAN_HAS_CHERT_BACKEND
63 [ + + ]: 408 : if (remote_type == "chert") {
64 : 138 : (void)getwritedb_chert(name, std::vector<std::string>(1, file));
65 : 138 : args += ".chert/";
66 : : }
67 : : #endif
68 : : #ifdef XAPIAN_HAS_FLINT_BACKEND
69 [ + + ]: 408 : if (remote_type == "flint") {
70 : 132 : (void)getwritedb_flint(name, std::vector<std::string>(1, file));
71 : 132 : args += ".flint/";
72 : : }
73 : : #endif
74 : 408 : args += name;
75 : :
76 : 0 : return args;
77 : : }
78 : :
79 : : std::string
80 : 1080 : BackendManagerRemote::get_remote_database_args(const std::vector<std::string> & files,
81 : : unsigned int timeout)
82 : : {
83 : 1080 : std::string args = "-t";
84 : 1080 : args += str(timeout);
85 : 1080 : args += ' ';
86 : : #ifdef XAPIAN_HAS_BRASS_BACKEND
87 [ + + ]: 1080 : if (remote_type == "brass") {
88 : 362 : args += createdb_brass(files);
89 : : }
90 : : #endif
91 : : #ifdef XAPIAN_HAS_CHERT_BACKEND
92 [ + + ]: 1080 : if (remote_type == "chert") {
93 : 362 : args += createdb_chert(files);
94 : : }
95 : : #endif
96 : : #ifdef XAPIAN_HAS_FLINT_BACKEND
97 [ + + ]: 1080 : if (remote_type == "flint") {
98 : 1080 : args += createdb_flint(files);
99 : : }
100 : : #endif
101 : :
102 : 0 : return args;
103 : : }
104 : :
105 : : std::string
106 : 48 : BackendManagerRemote::get_writable_database_as_database_args()
107 : : {
108 : 48 : std::string args = "-t300000 ";
109 : : #ifdef XAPIAN_HAS_BRASS_BACKEND
110 [ + + ]: 48 : if (remote_type == "brass") {
111 : 18 : args += ".brass/";
112 : : }
113 : : #endif
114 : : #ifdef XAPIAN_HAS_CHERT_BACKEND
115 [ + + ]: 48 : if (remote_type == "chert") {
116 : 18 : args += ".chert/";
117 : : }
118 : : #endif
119 : : #ifdef XAPIAN_HAS_FLINT_BACKEND
120 [ + + ]: 48 : if (remote_type == "flint") {
121 : 12 : args += ".flint/";
122 : : }
123 : : #endif
124 : 48 : args += last_wdb_name;
125 : :
126 : 0 : return args;
127 : : }
128 : :
129 : : std::string
130 : 6 : BackendManagerRemote::get_writable_database_again_args()
131 : : {
132 : 6 : std::string args = "-t300000 --writable ";
133 : : #ifdef XAPIAN_HAS_BRASS_BACKEND
134 [ + + ]: 6 : if (remote_type == "brass") {
135 : 2 : args += ".brass/";
136 : : }
137 : : #endif
138 : : #ifdef XAPIAN_HAS_CHERT_BACKEND
139 [ + + ]: 6 : if (remote_type == "chert") {
140 : 2 : args += ".chert/";
141 : : }
142 : : #endif
143 : : #ifdef XAPIAN_HAS_FLINT_BACKEND
144 [ + + ]: 6 : if (remote_type == "flint") {
145 : 2 : args += ".flint/";
146 : : }
147 : : #endif
148 : 6 : args += last_wdb_name;
149 : :
150 : 0 : return args;
151 : : }
|