X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2FAbstractMetadataProvider.h;h=0fe617d22000d9bd6625441c79302dfc5a955814;hb=b200befa360fe74b3b8865a654f54a6647723755;hp=723da5d24ff7581555c545c5d2967dc21806a79d;hpb=c072b75e6f6e05e24a1c35b952008b38d0d375c1;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/metadata/AbstractMetadataProvider.h b/saml/saml2/metadata/AbstractMetadataProvider.h index 723da5d..0fe617d 100644 --- a/saml/saml2/metadata/AbstractMetadataProvider.h +++ b/saml/saml2/metadata/AbstractMetadataProvider.h @@ -1,17 +1,21 @@ -/* - * Copyright 2001-2009 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** @@ -25,12 +29,16 @@ #include -#include -#include -#include +#include +#include +#include +#include namespace xmltooling { + class XMLTOOL_API Credential; + class XMLTOOL_API CredentialCriteria; class XMLTOOL_API KeyInfoResolver; + class XMLTOOL_API Mutex; }; namespace opensaml { @@ -38,6 +46,11 @@ namespace opensaml { class SAML_API MetadataFilter; +#if defined (_MSC_VER) + #pragma warning( push ) + #pragma warning( disable : 4251 ) +#endif + /** * Base class for caching metadata providers. */ @@ -60,7 +73,7 @@ namespace opensaml { * * @param e DOM to supply configuration for provider */ - AbstractMetadataProvider(const xercesc::DOMElement* e=NULL); + AbstractMetadataProvider(const xercesc::DOMElement* e=nullptr); public: virtual ~AbstractMetadataProvider(); @@ -68,21 +81,46 @@ namespace opensaml { using MetadataProvider::getEntityDescriptor; using MetadataProvider::getEntitiesDescriptor; + void outputStatus(std::ostream& os) const; void emitChangeEvent() 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; + const xmltooling::Credential* resolve(const xmltooling::CredentialCriteria* criteria=nullptr) const; std::vector::size_type resolve( - std::vector& results, const xmltooling::CredentialCriteria* criteria=NULL + std::vector& results, const xmltooling::CredentialCriteria* criteria=nullptr ) const; protected: + /** Time of last update for reporting. */ + mutable time_t m_lastUpdate; + /** Embedded KeyInfoResolver instance. */ xmltooling::KeyInfoResolver* m_resolver; /** - * Loads an entity into the cache for faster lookup. This includes - * processing known reverse lookup strategies for artifacts. + * Loads an entity into the cache for faster lookup. + *

This includes processing known reverse lookup strategies for artifacts. + * The validUntil parameter will contain the smallest value found on output. + * + * @param site 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 indexEntity(EntityDescriptor* site, time_t& validUntil, bool replace=false) const; + + /** + * Loads a group of entities into the cache for faster lookup. + *

The validUntil parameter will contain the smallest value found on output. + * + * @param group group definition + * @param validUntil maximum expiration time of the group definition + */ + virtual void indexGroup(EntitiesDescriptor* group, time_t& validUntil) const; + + /** + * @deprecated + * Loads an entity into the cache for faster lookup. + *

This includes processing known reverse lookup strategies for artifacts. * * @param site entity definition * @param validUntil maximum expiration time of the entity definition @@ -91,13 +129,14 @@ namespace opensaml { virtual void index(EntityDescriptor* site, time_t validUntil, bool replace=false) const; /** + * @deprecated * Loads a group of entities into the cache for faster lookup. * * @param group group definition * @param validUntil maximum expiration time of the group definition */ virtual void index(EntitiesDescriptor* group, time_t validUntil) const; - + /** * Clear the cache of known entities and groups. * @@ -112,11 +151,17 @@ namespace opensaml { mutable sitemap_t m_sources; mutable groupmap_t m_groups; - mutable xmltooling::Mutex* m_credentialLock; + std::auto_ptr m_resolverWrapper; + 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; }; + +#if defined (_MSC_VER) + #pragma warning( pop ) + #pragma warning( disable : 4251 ) +#endif }; };