Go to the documentation of this file.
19 #include <IceUtil/IceUtil.h>
20 #include <IceUtil/Timer.h>
28 class NodeI :
public Node,
public IceUtil::Monitor<IceUtil::RecMutex>
33 const Ice::ObjectPrx&,
35 const std::map<int, NodePrx>&);
41 void merge(
const std::set<int>&);
43 virtual void invitation(
int,
const std::string&,
const Ice::Current&);
45 ready(
int,
const std::string&,
const Ice::ObjectPrx&,
int,
Ice::Long,
const Ice::Current&);
49 const Ice::ObjectPrx&,
54 virtual bool areYouThere(
const std::string&,
int,
const Ice::Current&)
const;
55 virtual Ice::ObjectPrx
sync(
const Ice::Current&)
const;
79 const Ice::ObjectPrx _replicaProxy;
82 const std::map<int, NodePrx> _nodes;
83 const std::map<int, NodePrx>
96 std::set<GroupNodeInfo> _up;
97 std::set<int> _invitesIssued;
98 std::set<int> _invitesAccepted;
103 Ice::ObjectPrx _coordinatorProxy;
107 IceUtil::TimerTaskPtr _mergeTask;
108 IceUtil::TimerTaskPtr _timeoutTask;
109 IceUtil::TimerTaskPtr _checkTask;
110 IceUtil::TimerTaskPtr _mergeContinueTask;
126 _node->finishUpdate();
141 _master = _node->startCachedRead(_generation, file, line);
149 _node->finishUpdate();
173 Ice::ObjectPrx _master;
188 _node->startObserverUpdate(generation, file, line);
196 _node->finishUpdate();
206 #endif // ELECTION_I_H
void merge(const std::set< int > &)
IceUtil::Handle< Observers > ObserversPtr
IceUtil::Handle< NodeI > NodeIPtr
ObserverUpdateHelper(const NodeIPtr &node, Ice::Long generation, const char *file, int line)
idempotent NodeInfoSeq nodes()
Get the replication group information.
A struct used for marking the last log update.
Ice::ObjectPrx getMaster() const
idempotent bool areYouCoordinator()
Determine if this node is a coordinator.
void recovery(Ice::Long=-1)
bool updateMaster(const char *, int)
idempotent Object * sync()
Get the sync object for the replica hosted by this node.
Ice::ObjectPrx startCachedRead(Ice::Long &, const char *, int)
virtual void ready(int, const std::string &, const Ice::ObjectPrx &, int, Ice::Long, const Ice::Current &)
armarx::core::time::DateTime Time
Ice::Long generation() const
virtual void accept(int, const std::string &, const Ice::IntSeq &, const Ice::ObjectPrx &, const LogUpdate &, int, const Ice::Current &)
FinishUpdateHelper(const NodeIPtr &node)
bool observerPrecondition(Ice::Long generation) const
virtual void invitation(int, const std::string &, const Ice::Current &)
::std::vector<::IceStormElection::NodeInfo > NodeInfoSeq
A sequence of node info.
void checkObserverInit(Ice::Long)
idempotent QueryInfo query()
Get the query information for the given node.
Ice::ObjectPrx startUpdate(Ice::Long &, const char *, int)
virtual bool areYouThere(const std::string &, int, const Ice::Current &) const
NodeI(const IceStorm::InstancePtr &, const ReplicaPtr &, const Ice::ObjectPrx &, int, const std::map< int, NodePrx > &)
CachedReadHelper(const NodeIPtr &node, const char *file, int line)
void startObserverUpdate(Ice::Long, const char *, int)