summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/Replica.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/Replica.h')
-rw-r--r--cpp/src/IceStorm/Replica.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/cpp/src/IceStorm/Replica.h b/cpp/src/IceStorm/Replica.h
new file mode 100644
index 00000000000..25febb1ac58
--- /dev/null
+++ b/cpp/src/IceStorm/Replica.h
@@ -0,0 +1,47 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef REPLICA_H
+#define REPLICA_H
+
+#include <Ice/Ice.h>
+#include <IceStorm/Election.h>
+#include <set>
+
+namespace IceStormElection
+{
+
+struct GroupNodeInfo
+{
+ GroupNodeInfo(int i);
+ GroupNodeInfo(int i, LogUpdate l, const Ice::ObjectPrx& o = Ice::ObjectPrx());
+ bool operator<(const GroupNodeInfo& rhs) const;
+ bool operator==(const GroupNodeInfo& rhs) const;
+ const int id;
+ const LogUpdate llu;
+ const Ice::ObjectPrx observer;
+};
+
+class Replica : virtual public IceUtil::Shared
+{
+public:
+
+ ~Replica();
+
+ virtual LogUpdate getLastLogUpdate() const = 0;
+ virtual void sync(const Ice::ObjectPrx&) = 0;
+ virtual void initMaster(const std::set<IceStormElection::GroupNodeInfo>&, const LogUpdate&) = 0;
+ virtual Ice::ObjectPrx getObserver() const = 0;
+ virtual Ice::ObjectPrx getSync() const = 0;
+};
+typedef IceUtil::Handle<Replica> ReplicaPtr;
+
+}
+
+#endif // RELICA_H