From c6e08d702143f0337cd592d1599bd78d50c38873 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Sat, 24 Dec 2011 21:59:32 +0000 Subject: [PATCH] Adjust Lock API --- saml/SAMLConfig.cpp | 1 - saml/binding/impl/ArtifactMap.cpp | 4 ++-- saml/internal.h | 2 +- saml/saml2/metadata/AbstractMetadataProvider.h | 2 +- saml/saml2/metadata/ObservableMetadataProvider.h | 2 +- saml/saml2/metadata/impl/AbstractMetadataProvider.cpp | 4 ++-- saml/saml2/metadata/impl/ChainingMetadataProvider.cpp | 10 +++++----- saml/saml2/metadata/impl/ObservableMetadataProvider.cpp | 6 +++--- 8 files changed, 15 insertions(+), 16 deletions(-) diff --git a/saml/SAMLConfig.cpp b/saml/SAMLConfig.cpp index d18d562..5efbb59 100644 --- a/saml/SAMLConfig.cpp +++ b/saml/SAMLConfig.cpp @@ -140,7 +140,6 @@ SAMLInternalConfig::SAMLInternalConfig() : m_initCount(0), m_lock(Mutex::create( SAMLInternalConfig::~SAMLInternalConfig() { - delete m_lock; } bool SAMLInternalConfig::init(bool initXMLTooling) diff --git a/saml/binding/impl/ArtifactMap.cpp b/saml/binding/impl/ArtifactMap.cpp index 6dd3fbb..641acfa 100644 --- a/saml/binding/impl/ArtifactMap.cpp +++ b/saml/binding/impl/ArtifactMap.cpp @@ -106,7 +106,7 @@ void ArtifactMappings::removeMapping(const map::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::iterator i = m_artMap.find(SAMLArtifact::toHex(artifact->getMessageHandle())); if (i == m_artMap.end()) diff --git a/saml/internal.h b/saml/internal.h index 5d66226..8183321 100644 --- a/saml/internal.h +++ b/saml/internal.h @@ -111,7 +111,7 @@ namespace opensaml { private: int m_initCount; - xmltooling::Mutex* m_lock; + std::auto_ptr m_lock; }; /// @endcond diff --git a/saml/saml2/metadata/AbstractMetadataProvider.h b/saml/saml2/metadata/AbstractMetadataProvider.h index 0fe617d..0ee9e5f 100644 --- a/saml/saml2/metadata/AbstractMetadataProvider.h +++ b/saml/saml2/metadata/AbstractMetadataProvider.h @@ -152,7 +152,7 @@ namespace opensaml { mutable groupmap_t m_groups; std::auto_ptr m_resolverWrapper; - std::auto_ptr m_credentialLock; + mutable std::auto_ptr m_credentialLock; typedef std::map< const RoleDescriptor*, std::vector > credmap_t; mutable credmap_t m_credentialMap; const credmap_t::mapped_type& resolveCredentials(const RoleDescriptor& role) const; diff --git a/saml/saml2/metadata/ObservableMetadataProvider.h b/saml/saml2/metadata/ObservableMetadataProvider.h index 2cb0bee..5333afc 100644 --- a/saml/saml2/metadata/ObservableMetadataProvider.h +++ b/saml/saml2/metadata/ObservableMetadataProvider.h @@ -97,7 +97,7 @@ namespace opensaml { virtual const Observer* removeObserver(const Observer* oldObserver) const; private: - std::auto_ptr m_observerLock; + mutable std::auto_ptr m_observerLock; mutable std::vector m_observers; }; diff --git a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp index 6cd7273..3eb0a97 100644 --- a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp @@ -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::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) diff --git a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp index 067e6ff..f5fb8c5 100644 --- a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp @@ -77,7 +77,7 @@ namespace opensaml { vector::size_type resolve(vector& 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 m_trackerLock; + mutable auto_ptr m_trackerLock; auto_ptr m_tlsKey; mutable ptr_vector m_providers; mutable set 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(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; } diff --git a/saml/saml2/metadata/impl/ObservableMetadataProvider.cpp b/saml/saml2/metadata/impl/ObservableMetadataProvider.cpp index 3f0c7b1..b89f450 100644 --- a/saml/saml2/metadata/impl/ObservableMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/ObservableMetadataProvider.cpp @@ -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::iterator i = find(m_observers.begin(), m_observers.end(), oldObserver); if (i != m_observers.end()) { m_observers.erase(i); -- 2.1.4