Merge remote-tracking branch 'origin/moonshot' into HEAD
[shibboleth/opensaml2.git] / saml / saml2 / metadata / ObservableMetadataProvider.h
index d395714..fab712b 100644 (file)
@@ -59,6 +59,11 @@ namespace opensaml {
              */
             virtual void emitChangeEvent() const;
 
+            /**
+             * Convenience method for notifying every registered Observer of an event.
+             */
+            virtual void emitChangeEvent(const EntityDescriptor& entity) const;
+
         public:
             virtual ~ObservableMetadataProvider();
             
@@ -79,6 +84,15 @@ namespace opensaml {
                  * @param provider the provider being observed
                  */
                 virtual void onEvent(const ObservableMetadataProvider& provider) const=0;
+
+                /**
+                 * Called when a provider signals an event has occured.
+                 * The provider is already locked. 
+                 * 
+                 * @param provider the provider being observed
+                 * @param entity the entity that underwent modification
+                 */
+                virtual void onEvent(const ObservableMetadataProvider& provider, const EntityDescriptor& entity) const;
             };
             
             /**
@@ -97,7 +111,7 @@ namespace opensaml {
             virtual const Observer* removeObserver(const Observer* oldObserver) const;
 
         private:
-            mutable xmltooling::Mutex* m_observerLock;
+            mutable std::auto_ptr<xmltooling::Mutex> m_observerLock;
             mutable std::vector<const Observer*> m_observers;
         };