8ff5c00f7444b6b4695fd7e9df2caac92e76f076
[shibboleth/sp.git] / shibsp / SessionCache.cpp
1 /*\r
2  *  Copyright 2001-2007 Internet2\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 /**\r
18  * SessionCache.cpp\r
19  * \r
20  * SessionCache base class and factory registration\r
21  */\r
22 \r
23 #include "internal.h"\r
24 #include "SessionCache.h"\r
25 \r
26 #include <xercesc/util/XMLUniDefs.hpp>\r
27 \r
28 using namespace shibsp;\r
29 using namespace xmltooling;\r
30 \r
31 namespace shibsp {\r
32 \r
33 #ifndef SHIBSP_LITE\r
34     SHIBSP_DLLLOCAL PluginManager<SessionCache,std::string,const DOMElement*>::Factory StorageServiceCacheFactory;\r
35 #else\r
36     SHIBSP_DLLLOCAL PluginManager<SessionCache,std::string,const DOMElement*>::Factory RemotedCacheFactory;\r
37 #endif\r
38 \r
39     static const XMLCh cacheTimeout[] =     UNICODE_LITERAL_12(c,a,c,h,e,T,i,m,e,o,u,t);\r
40 }\r
41 \r
42 void SHIBSP_API shibsp::registerSessionCaches()\r
43 {\r
44 #ifndef SHIBSP_LITE\r
45     SPConfig::getConfig().SessionCacheManager.registerFactory(STORAGESERVICE_SESSION_CACHE, StorageServiceCacheFactory);\r
46 #else\r
47     SPConfig::getConfig().SessionCacheManager.registerFactory(REMOTED_SESSION_CACHE, RemotedCacheFactory);\r
48 #endif\r
49 }\r
50 \r
51 SessionCache::SessionCache(const DOMElement* e, unsigned long defaultTimeout) : m_cacheTimeout(defaultTimeout)\r
52 {\r
53     if (e) {\r
54         const XMLCh* tag=e->getAttributeNS(NULL,cacheTimeout);\r
55         if (tag && *tag) {\r
56             m_cacheTimeout = XMLString::parseInt(tag);\r
57             if (!m_cacheTimeout)\r
58                 m_cacheTimeout=defaultTimeout;\r
59         }\r
60     }\r
61 }\r