Adjust Lock API
authorScott Cantor <cantor.2@osu.edu>
Sat, 24 Dec 2011 21:59:32 +0000 (21:59 +0000)
committerScott Cantor <cantor.2@osu.edu>
Sat, 24 Dec 2011 21:59:32 +0000 (21:59 +0000)
saml/SAMLConfig.cpp
saml/binding/impl/ArtifactMap.cpp
saml/internal.h
saml/saml2/metadata/AbstractMetadataProvider.h
saml/saml2/metadata/ObservableMetadataProvider.h
saml/saml2/metadata/impl/AbstractMetadataProvider.cpp
saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
saml/saml2/metadata/impl/ObservableMetadataProvider.cpp

index d18d562..5efbb59 100644 (file)
@@ -140,7 +140,6 @@ SAMLInternalConfig::SAMLInternalConfig() : m_initCount(0), m_lock(Mutex::create(
 
 SAMLInternalConfig::~SAMLInternalConfig()
 {
-    delete m_lock;
 }
 
 bool SAMLInternalConfig::init(bool initXMLTooling)
index 6dd3fbb..641acfa 100644 (file)
@@ -106,7 +106,7 @@ void ArtifactMappings::removeMapping(const map<string,Mapping>::iterator& i)
 
 void ArtifactMappings::storeContent(XMLObject* content, const SAMLArtifact* artifact, const char* relyingParty, int TTL)
 {
-    Lock wrapper(m_lock.get());
+    Lock wrapper(m_lock);
 
     // Garbage collect any expired artifacts.
     time_t now = time(nullptr);
@@ -129,7 +129,7 @@ void ArtifactMappings::storeContent(XMLObject* content, const SAMLArtifact* arti
 XMLObject* ArtifactMappings::retrieveContent(const SAMLArtifact* artifact, const char* relyingParty)
 {
     Category& log=Category::getInstance(SAML_LOGCAT".ArtifactMap");
-    Lock wrapper(m_lock.get());
+    Lock wrapper(m_lock);
 
     map<string,Mapping>::iterator i = m_artMap.find(SAMLArtifact::toHex(artifact->getMessageHandle()));
     if (i == m_artMap.end())
index 5d66226..8183321 100644 (file)
@@ -111,7 +111,7 @@ namespace opensaml {
 
     private:
         int m_initCount;
-        xmltooling::Mutex* m_lock;
+        std::auto_ptr<xmltooling::Mutex> m_lock;
     };
     /// @endcond
 
index 0fe617d..0ee9e5f 100644 (file)
@@ -152,7 +152,7 @@ namespace opensaml {
             mutable groupmap_t m_groups;
 
             std::auto_ptr<xmltooling::KeyInfoResolver> m_resolverWrapper;
-            std::auto_ptr<xmltooling::Mutex> m_credentialLock;
+            mutable std::auto_ptr<xmltooling::Mutex> m_credentialLock;
             typedef std::map< const RoleDescriptor*, std::vector<xmltooling::Credential*> > credmap_t;
             mutable credmap_t m_credentialMap;
             const credmap_t::mapped_type& resolveCredentials(const RoleDescriptor& role) const;
index 2cb0bee..5333afc 100644 (file)
@@ -97,7 +97,7 @@ namespace opensaml {
             virtual const Observer* removeObserver(const Observer* oldObserver) const;
 
         private:
-            std::auto_ptr<xmltooling::Mutex> m_observerLock;
+            mutable std::auto_ptr<xmltooling::Mutex> m_observerLock;
             mutable std::vector<const Observer*> m_observers;
         };
 
index 6cd7273..3eb0a97 100644 (file)
@@ -316,7 +316,7 @@ const Credential* AbstractMetadataProvider::resolve(const CredentialCriteria* cr
     if (!metacrit)
         throw MetadataException("Cannot resolve credentials without a MetadataCredentialCriteria object.");
 
-    Lock lock(m_credentialLock.get());
+    Lock lock(m_credentialLock);
     const credmap_t::mapped_type& creds = resolveCredentials(metacrit->getRole());
 
     for (credmap_t::mapped_type::const_iterator c = creds.begin(); c!=creds.end(); ++c)
@@ -333,7 +333,7 @@ vector<const Credential*>::size_type AbstractMetadataProvider::resolve(
     if (!metacrit)
         throw MetadataException("Cannot resolve credentials without a MetadataCredentialCriteria object.");
 
-    Lock lock(m_credentialLock.get());
+    Lock lock(m_credentialLock);
     const credmap_t::mapped_type& creds = resolveCredentials(metacrit->getRole());
 
    for (credmap_t::mapped_type::const_iterator c = creds.begin(); c!=creds.end(); ++c)
index 067e6ff..f5fb8c5 100644 (file)
@@ -77,7 +77,7 @@ namespace opensaml {
             vector<const Credential*>::size_type resolve(vector<const Credential*>& results, const CredentialCriteria* criteria=nullptr) const;
 
             string getCacheTag() const {
-                Lock lock(m_trackerLock.get());
+                Lock lock(m_trackerLock);
                 return m_feedTag;
             }
 
@@ -98,7 +98,7 @@ namespace opensaml {
 
             void onEvent(const ObservableMetadataProvider& provider) const {
                 // Reset the cache tag for the feed.
-                Lock lock(m_trackerLock.get());
+                Lock lock(m_trackerLock);
                 SAMLConfig::getConfig().generateRandomBytes(m_feedTag, 4);
                 m_feedTag = SAMLArtifact::toHex(m_feedTag);
                 emitChangeEvent();
@@ -111,7 +111,7 @@ namespace opensaml {
 
         private:
             bool m_firstMatch;
-            auto_ptr<Mutex> m_trackerLock;
+            mutable auto_ptr<Mutex> m_trackerLock;
             auto_ptr<ThreadKey> m_tlsKey;
             mutable ptr_vector<MetadataProvider> m_providers;
             mutable set<tracker_t*> m_trackers;
@@ -122,7 +122,7 @@ namespace opensaml {
 
         struct SAML_DLLLOCAL tracker_t {
             tracker_t(const ChainingMetadataProvider* m) : m_metadata(m) {
-                Lock lock(m_metadata->m_trackerLock.get());
+                Lock lock(m_metadata->m_trackerLock);
                 m_metadata->m_trackers.insert(this);
             }
 
@@ -169,7 +169,7 @@ void ChainingMetadataProvider::tracker_cleanup(void* ptr)
     if (ptr) {
         // free the tracker after removing it from the parent plugin's tracker set
         tracker_t* t = reinterpret_cast<tracker_t*>(ptr);
-        Lock lock(t->m_metadata->m_trackerLock.get());
+        Lock lock(t->m_metadata->m_trackerLock);
         t->m_metadata->m_trackers.erase(t);
         delete t;
     }
index 3f0c7b1..b89f450 100644 (file)
@@ -46,19 +46,19 @@ ObservableMetadataProvider::~ObservableMetadataProvider()
 
 void ObservableMetadataProvider::emitChangeEvent() const
 {
-    Lock lock(m_observerLock.get());
+    Lock lock(m_observerLock);
     for_each(m_observers.begin(), m_observers.end(), boost::bind(&Observer::onEvent, _1, boost::ref(*this)));
 }
 
 void ObservableMetadataProvider::addObserver(const Observer* newObserver) const
 {
-    Lock lock(m_observerLock.get());
+    Lock lock(m_observerLock);
     m_observers.push_back(newObserver);
 }
 
 const ObservableMetadataProvider::Observer* ObservableMetadataProvider::removeObserver(const Observer* oldObserver) const
 {
-    Lock lock(m_observerLock.get());
+    Lock lock(m_observerLock);
     vector<const Observer*>::iterator i = find(m_observers.begin(), m_observers.end(), oldObserver);
     if (i != m_observers.end()) {
         m_observers.erase(i);