X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2FAbstractMetadataProvider.h;h=50d00f1f559ff869044ea43734d13abb5d4237f4;hb=9247fd98448d17c495f1d811ac1ba82571f7ef98;hp=3506cac4736e566237343aecfbe94bf97b0777b0;hpb=46ac496b77b850309c07e732ff89fa41c776915d;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/metadata/AbstractMetadataProvider.h b/saml/saml2/metadata/AbstractMetadataProvider.h index 3506cac..50d00f1 100644 --- a/saml/saml2/metadata/AbstractMetadataProvider.h +++ b/saml/saml2/metadata/AbstractMetadataProvider.h @@ -65,8 +65,7 @@ namespace opensaml { using MetadataProvider::getEntitiesDescriptor; void emitChangeEvent() const; - const EntityDescriptor* getEntityDescriptor(const char* id, bool requireValidMetadata=true) const; - const EntityDescriptor* getEntityDescriptor(const SAMLArtifact* artifact) const; + std::pair getEntityDescriptor(const Criteria& criteria) const; const EntitiesDescriptor* getEntitiesDescriptor(const char* name, bool requireValidMetadata=true) const; const xmltooling::Credential* resolve(const xmltooling::CredentialCriteria* criteria=NULL) const; std::vector::size_type resolve( @@ -82,29 +81,32 @@ namespace opensaml { * processing known reverse lookup strategies for artifacts. * * @param site entity definition - * @param validUntil expiration time of the entity definition + * @param validUntil maximum expiration time of the entity definition + * @param replace true iff existing entries for the same entity should be cleared/replaced */ - virtual void index(EntityDescriptor* site, time_t validUntil); + virtual void index(EntityDescriptor* site, time_t validUntil, bool replace=false) const; /** * Loads a group of entities into the cache for faster lookup. * * @param group group definition - * @param validUntil expiration time of the group definition + * @param validUntil maximum expiration time of the group definition */ - virtual void index(EntitiesDescriptor* group, time_t validUntil); + virtual void index(EntitiesDescriptor* group, time_t validUntil) const; /** * Clear the cache of known entities and groups. + * + * @param freeSites true iff the objects cached in the site map should be freed. */ - virtual void clearDescriptorIndex(); + virtual void clearDescriptorIndex(bool freeSites=false); private: typedef std::multimap sitemap_t; typedef std::multimap groupmap_t; - sitemap_t m_sites; - sitemap_t m_sources; - groupmap_t m_groups; + mutable sitemap_t m_sites; + mutable sitemap_t m_sources; + mutable groupmap_t m_groups; mutable xmltooling::Mutex* m_credentialLock; typedef std::map< const RoleDescriptor*, std::vector > credmap_t;