00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <config.h>
00023
00024 #include "backendmanager_remoteprog.h"
00025
00026 #include <xapian.h>
00027
00028 #include "utils.h"
00029
00030 #ifdef HAVE_VALGRIND
00031 # include <valgrind/memcheck.h>
00032 #endif
00033
00034 using namespace std;
00035
00036 std::string
00037 BackendManagerRemoteProg::get_dbtype() const
00038 {
00039 return "remoteprog_" + remote_type;
00040 }
00041
00042 Xapian::Database
00043 BackendManagerRemoteProg::do_get_database(const vector<string> & files)
00044 {
00045
00046
00047 return BackendManagerRemoteProg::get_remote_database(files, 300000);
00048 }
00049
00050 Xapian::WritableDatabase
00051 BackendManagerRemoteProg::get_writable_database(const string & name,
00052 const string & file)
00053 {
00054 string args = get_writable_database_args(name, file);
00055
00056 #ifdef HAVE_VALGRIND
00057 if (RUNNING_ON_VALGRIND) {
00058 args.insert(0, XAPIAN_PROGSRV" ");
00059 return Xapian::Remote::open_writable("./runsrv", args);
00060 }
00061 #endif
00062 return Xapian::Remote::open_writable(XAPIAN_PROGSRV, args);
00063 }
00064
00065 Xapian::Database
00066 BackendManagerRemoteProg::get_remote_database(const vector<string> & files,
00067 unsigned int timeout)
00068 {
00069 string args = get_remote_database_args(files, timeout);
00070
00071 #ifdef HAVE_VALGRIND
00072 if (RUNNING_ON_VALGRIND) {
00073 args.insert(0, XAPIAN_PROGSRV" ");
00074 return Xapian::Remote::open("./runsrv", args);
00075 }
00076 #endif
00077 return Xapian::Remote::open(XAPIAN_PROGSRV, args);
00078 }
00079
00080 Xapian::Database
00081 BackendManagerRemoteProg::get_writable_database_as_database()
00082 {
00083 string args = get_writable_database_as_database_args();
00084
00085 #ifdef HAVE_VALGRIND
00086 if (RUNNING_ON_VALGRIND) {
00087 args.insert(0, XAPIAN_PROGSRV" ");
00088 return Xapian::Remote::open("./runsrv", args);
00089 }
00090 #endif
00091 return Xapian::Remote::open(XAPIAN_PROGSRV, args);
00092 }
00093
00094 Xapian::WritableDatabase
00095 BackendManagerRemoteProg::get_writable_database_again()
00096 {
00097 string args = get_writable_database_again_args();
00098
00099 #ifdef HAVE_VALGRIND
00100 if (RUNNING_ON_VALGRIND) {
00101 args.insert(0, XAPIAN_PROGSRV" ");
00102 return Xapian::Remote::open_writable("./runsrv", args);
00103 }
00104 #endif
00105 return Xapian::Remote::open_writable(XAPIAN_PROGSRV, args);
00106 }