diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-09-13 10:09:50 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-09-13 10:09:50 +0000 |
commit | e65e272d55bfe9f9d26de43b73721c04b683234a (patch) | |
tree | 0b0e04bbaf26fe357a1620e4725986d5d750c003 /cpp/src/IceGrid/Topics.h | |
parent | Fixed for VC6 (STLport bug?) (diff) | |
download | ice-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.h | 39 |
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: |