X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FDynamicMetadataProvider.cpp;h=9a65d012af68b11bc9306d181dffb8e7057a007b;hp=a6af29e89815599a65077a3114a8974eff950981;hb=d76fadfe73c89442f328a7540e7b0ae08e0fbae6;hpb=3654400391293dea962369965a26ae2023a61f37 diff --git a/saml/saml2/metadata/impl/DynamicMetadataProvider.cpp b/saml/saml2/metadata/impl/DynamicMetadataProvider.cpp index a6af29e..9a65d01 100644 --- a/saml/saml2/metadata/impl/DynamicMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/DynamicMetadataProvider.cpp @@ -47,6 +47,7 @@ using namespace std; # define min(a,b) (((a) < (b)) ? (a) : (b)) # endif +static const XMLCh id[] = UNICODE_LITERAL_2(i,d); static const XMLCh maxCacheDuration[] = UNICODE_LITERAL_16(m,a,x,C,a,c,h,e,D,u,r,a,t,i,o,n); static const XMLCh minCacheDuration[] = UNICODE_LITERAL_16(m,i,n,C,a,c,h,e,D,u,r,a,t,i,o,n); static const XMLCh refreshDelayFactor[] = UNICODE_LITERAL_18(r,e,f,r,e,s,h,D,e,l,a,y,F,a,c,t,o,r); @@ -64,6 +65,7 @@ namespace opensaml { DynamicMetadataProvider::DynamicMetadataProvider(const DOMElement* e) : AbstractMetadataProvider(e), m_validate(XMLHelper::getAttrBool(e, false, validate)), + m_id(XMLHelper::getAttrString(e, "Dynamic", id)), m_lock(RWLock::create()), m_refreshDelayFactor(0.75), m_minCacheDuration(XMLHelper::getAttrInt(e, 600, minCacheDuration)), @@ -116,6 +118,11 @@ void DynamicMetadataProvider::init() { } +const char* DynamicMetadataProvider::getId() const +{ + return m_id.c_str(); +} + pair DynamicMetadataProvider::getEntityDescriptor(const Criteria& criteria) const { Category& log = Category::getInstance(SAML_LOGCAT".MetadataProvider.Dynamic"); @@ -235,6 +242,8 @@ pair DynamicMetadataProvider::get cacheExp = SAMLTIME_MAX; indexEntity(entity2.release(), cacheExp, true); + m_lastUpdate = now; + // Downgrade back to a read lock. m_lock->unlock(); m_lock->rdlock();