SAMLInternalConfig::~SAMLInternalConfig()
{
- delete m_lock;
}
bool SAMLInternalConfig::init(bool initXMLTooling)
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);
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())
private:
int m_initCount;
- xmltooling::Mutex* m_lock;
+ std::auto_ptr<xmltooling::Mutex> m_lock;
};
/// @endcond
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;
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;
};
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)
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)
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;
}
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();
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;
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);
}
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;
}
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);