summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Topics.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2013-09-03 15:42:19 +0200
committerBenoit Foucher <benoit@zeroc.com>2013-09-03 15:42:19 +0200
commit91f6ebb998532b36fc70187b641a5b7404060422 (patch)
treeac88e961c68e4b09eb819f4b57b9ecac56854567 /cpp/src/IceGrid/Topics.h
parentICE-5378 - Remove slice35d.dll from Windows installer (diff)
downloadice-91f6ebb998532b36fc70187b641a5b7404060422.tar.bz2
ice-91f6ebb998532b36fc70187b641a5b7404060422.tar.xz
ice-91f6ebb998532b36fc70187b641a5b7404060422.zip
Fixed ICE-5358 - allow IceGrid replica to initialize its database from another replica
Diffstat (limited to 'cpp/src/IceGrid/Topics.h')
-rw-r--r--cpp/src/IceGrid/Topics.h44
1 files changed, 24 insertions, 20 deletions
diff --git a/cpp/src/IceGrid/Topics.h b/cpp/src/IceGrid/Topics.h
index e668fcf8d66..4de325df57d 100644
--- a/cpp/src/IceGrid/Topics.h
+++ b/cpp/src/IceGrid/Topics.h
@@ -14,6 +14,7 @@
#include <IceStorm/IceStorm.h>
#include <IceGrid/Internal.h>
#include <IceGrid/Observer.h>
+#include <IceGrid/DB.h>
#include <set>
namespace IceGrid
@@ -23,7 +24,7 @@ class ObserverTopic : public IceUtil::Monitor<IceUtil::Mutex>, virtual public Ic
{
public:
- ObserverTopic(const IceStorm::TopicManagerPrx&, const std::string&);
+ ObserverTopic(const IceStorm::TopicManagerPrx&, const std::string&, Ice::Long = 0);
virtual ~ObserverTopic();
int subscribe(const Ice::ObjectPrx&, const std::string& = std::string());
@@ -36,12 +37,14 @@ public:
void waitForSyncedSubscribers(int, const std::string& = std::string());
+ int getSerial() const;
+
protected:
void addExpectedUpdate(int, const std::string& = std::string());
void waitForSyncedSubscribersNoSync(int, const std::string& = std::string());
- void updateSerial(int);
- Ice::Context getContext(int) const;
+ void updateSerial(Ice::Long = 0);
+ Ice::Context getContext(int, Ice::Long = 0) const;
template<typename T> std::vector<T> getPublishers() const
{
@@ -57,6 +60,7 @@ protected:
std::map<Ice::EncodingVersion, IceStorm::TopicPrx> _topics;
std::vector<Ice::ObjectPrx> _basePublishers;
int _serial;
+ Ice::Long _dbSerial;
std::set<std::string> _syncSubscribers;
std::map<int, std::set<std::string> > _waitForUpdates;
@@ -111,12 +115,12 @@ class ApplicationObserverTopic : public ObserverTopic
{
public:
- ApplicationObserverTopic(const IceStorm::TopicManagerPrx&, const std::map<std::string, ApplicationInfo>&);
+ ApplicationObserverTopic(const IceStorm::TopicManagerPrx&, const ApplicationsWrapperPtr&);
- int applicationInit(int, const ApplicationInfoSeq&);
- int applicationAdded(int, const ApplicationInfo&);
- int applicationRemoved(int, const std::string&);
- int applicationUpdated(int, const ApplicationUpdateInfo&);
+ int applicationInit(Ice::Long, const ApplicationInfoSeq&);
+ int applicationAdded(Ice::Long, const ApplicationInfo&);
+ int applicationRemoved(Ice::Long, const std::string&);
+ int applicationUpdated(Ice::Long, const ApplicationUpdateInfo&);
virtual void initObserver(const Ice::ObjectPrx&);
@@ -131,12 +135,12 @@ class AdapterObserverTopic : public ObserverTopic
{
public:
- AdapterObserverTopic(const IceStorm::TopicManagerPrx&, const std::map<std::string, AdapterInfo>&);
+ AdapterObserverTopic(const IceStorm::TopicManagerPrx&, const AdaptersWrapperPtr&);
- int adapterInit(const AdapterInfoSeq&);
- int adapterAdded(const AdapterInfo&);
- int adapterUpdated(const AdapterInfo&);
- int adapterRemoved(const std::string&);
+ int adapterInit(Ice::Long, const AdapterInfoSeq&);
+ int adapterAdded(Ice::Long, const AdapterInfo&);
+ int adapterUpdated(Ice::Long, const AdapterInfo&);
+ int adapterRemoved(Ice::Long, const std::string&);
virtual void initObserver(const Ice::ObjectPrx&);
@@ -151,15 +155,15 @@ class ObjectObserverTopic : public ObserverTopic
{
public:
- ObjectObserverTopic(const IceStorm::TopicManagerPrx&, const std::map<Ice::Identity, ObjectInfo>&);
+ ObjectObserverTopic(const IceStorm::TopicManagerPrx&, const ObjectsWrapperPtr&);
- int objectInit(const ObjectInfoSeq&);
- int objectAdded(const ObjectInfo&);
- int objectUpdated(const ObjectInfo&);
- int objectRemoved(const Ice::Identity&);
+ int objectInit(Ice::Long, const ObjectInfoSeq&);
+ int objectAdded(Ice::Long, const ObjectInfo&);
+ int objectUpdated(Ice::Long, const ObjectInfo&);
+ int objectRemoved(Ice::Long, const Ice::Identity&);
- int objectsAddedOrUpdated(const ObjectInfoSeq&);
- int objectsRemoved(const ObjectInfoSeq&);
+ int wellKnownObjectsAddedOrUpdated(const ObjectInfoSeq&);
+ int wellKnownObjectsRemoved(const ObjectInfoSeq&);
virtual void initObserver(const Ice::ObjectPrx&);