summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Topics.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-09-13 10:09:50 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-09-13 10:09:50 +0000
commite65e272d55bfe9f9d26de43b73721c04b683234a (patch)
tree0b0e04bbaf26fe357a1620e4725986d5d750c003 /cpp/src/IceGrid/Topics.h
parentFixed for VC6 (STLport bug?) (diff)
downloadice-e65e272d55bfe9f9d26de43b73721c04b683234a.tar.bz2
ice-e65e272d55bfe9f9d26de43b73721c04b683234a.tar.xz
ice-e65e272d55bfe9f9d26de43b73721c04b683234a.zip
Fixes
Diffstat (limited to 'cpp/src/IceGrid/Topics.h')
-rw-r--r--cpp/src/IceGrid/Topics.h39
1 files changed, 19 insertions, 20 deletions
diff --git a/cpp/src/IceGrid/Topics.h b/cpp/src/IceGrid/Topics.h
index e17f3c9a438..c561dfa5862 100644
--- a/cpp/src/IceGrid/Topics.h
+++ b/cpp/src/IceGrid/Topics.h
@@ -20,14 +20,6 @@
namespace IceGrid
{
-enum TopicName
-{
- RegistryObserverTopicName,
- NodeObserverTopicName,
- ApplicationObserverTopicName,
- AdapterObserverTopicName,
- ObjectObserverTopicName
-};
class ObserverTopic : public IceUtil::Monitor<IceUtil::Mutex>, virtual public Ice::Object
{
@@ -36,23 +28,30 @@ public:
ObserverTopic(const IceStorm::TopicManagerPrx&, const std::string&);
virtual ~ObserverTopic();
- void subscribe(const Ice::ObjectPrx&, int = -1);
- void subscribeAndWaitForSubscription(const Ice::ObjectPrx&);
- void unsubscribe(const Ice::ObjectPrx&);
+ void subscribe(const Ice::ObjectPrx&, const std::string& = std::string(), int = -1);
+ void subscribeAndWaitForSubscription(const Ice::ObjectPrx&, const std::string& = std::string());
+ void unsubscribe(const Ice::ObjectPrx&, const std::string& = std::string());
void destroy();
- virtual void initObserver(const Ice::ObjectPrx&) = 0;
+ void receivedUpdate(const std::string&, int, const std::string&);
+
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&) = 0;
protected:
- void subscribeImpl(const Ice::ObjectPrx&);
+ void waitForSyncedSubscribers(int);
+ void subscribeImpl(const Ice::ObjectPrx&, const std::string&);
void updateSerial(int);
- Ice::Context getContext(const std::string&, int) const;
+ Ice::Context getContext(int) const;
IceStorm::TopicPrx _topic;
Ice::ObjectPrx _basePublisher;
std::set<Ice::Identity> _waitForSubscribe;
- int _serial;
+ int _serial;
+
+ std::set<std::string> _syncSubscribers;
+ std::map<int, std::set<std::string> > _waitForUpdates;
+ std::map<int, std::map<std::string, std::string> > _updateFailures;
};
typedef IceUtil::Handle<ObserverTopic> ObserverTopicPtr;
@@ -65,7 +64,7 @@ public:
void registryUp(const RegistryInfo&);
void registryDown(const std::string&);
- virtual void initObserver(const Ice::ObjectPrx&);
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&);
private:
@@ -89,7 +88,7 @@ public:
const NodeObserverPrx& getPublisher() { return _externalPublisher; }
void nodeDown(const std::string&);
- virtual void initObserver(const Ice::ObjectPrx&);
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&);
private:
@@ -110,7 +109,7 @@ public:
void applicationRemoved(int, const std::string&);
void applicationUpdated(int, const ApplicationUpdateInfo&);
- virtual void initObserver(const Ice::ObjectPrx&);
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&);
private:
@@ -130,7 +129,7 @@ public:
void adapterUpdated(int, const AdapterInfo&);
void adapterRemoved(int, const std::string&);
- virtual void initObserver(const Ice::ObjectPrx&);
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&);
private:
@@ -150,7 +149,7 @@ public:
void objectUpdated(int, const ObjectInfo&);
void objectRemoved(int, const Ice::Identity&);
- virtual void initObserver(const Ice::ObjectPrx&);
+ virtual void initObserver(const Ice::ObjectPrx&, const std::string&);
private: