00001 00004 /* Copyright (C) 2008 Lemur Consulting Ltd 00005 * Copyright (C) 2009,2010 Olly Betts 00006 * 00007 * This program is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU General Public License as 00009 * published by the Free Software Foundation; either version 2 of the 00010 * License, or (at your option) any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this program; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 00020 * USA 00021 */ 00022 00023 #ifndef XAPIAN_INCLUDED_DATABASEREPLICATOR_H 00024 #define XAPIAN_INCLUDED_DATABASEREPLICATOR_H 00025 00026 #include <string> 00027 00028 #include "xapian/types.h" 00029 00030 class RemoteConnection; 00031 00032 namespace Xapian { 00033 00038 class DatabaseReplicator { 00039 private: 00041 DatabaseReplicator(const DatabaseReplicator &); 00042 00044 void operator=(const DatabaseReplicator &); 00045 00046 protected: 00050 DatabaseReplicator() { } 00051 00052 public: 00055 virtual ~DatabaseReplicator(); 00056 00061 static DatabaseReplicator * open(const std::string & path); 00062 00068 virtual bool check_revision_at_least(const std::string & rev, 00069 const std::string & target) const = 0; 00070 00081 virtual std::string apply_changeset_from_conn(RemoteConnection & conn, 00082 double end_time, 00083 bool db_valid) const = 0; 00084 00091 virtual std::string get_uuid() const = 0; 00092 }; 00093 00094 } 00095 00096 #endif /* XAPIAN_INCLUDED_DATABASEREPLICATOR_H */