Imported Upstream version 2.4+dfsg
[shibboleth/sp.git] / shibsp / handler / SessionInitiator.h
index 67530d4..f64fe18 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * Pluggable runtime functionality that handles initiating sessions.
  */
 
-#ifndef __shibsp_initiator_h__
-#define __shibsp_initiator_h__
+#ifndef __shibsp_sesinitiator_h__
+#define __shibsp_sesinitiator_h__
 
 #include <shibsp/handler/Handler.h>
 
+#include <map>
+#include <set>
+#include <string>
+
 namespace shibsp {
 
     /**
@@ -40,12 +44,34 @@ namespace shibsp {
         /** Property remapper for configuration compatibility. */
         static std::map<std::string,std::string> m_remapper;
 
+        /** Set of optional settings supported by handler. */
+        std::set<std::string> m_supportedOptions;
+
         SessionInitiator();
 
+        /**
+         * Examines the request and applicable settings to determine whether
+         * the handler is able to support the request.
+         * <p>If the handler is within a chain, the method will return false,
+         * otherwise an exception will be raised.
+         *
+         * @param request   SP request context
+         * @param isHandler true iff executing in the context of a direct handler invocation
+         * @return  true iff the request appears to be compatible
+         */
+        bool checkCompatibility(SPRequest& request, bool isHandler) const;
+
     public:
         virtual ~SessionInitiator();
 
         /**
+         * Indicates the set of optional settings supported by the handler.
+         *
+         * @return  a set of the optional settings supported
+         */
+        virtual const std::set<std::string>& getSupportedOptions() const;
+
+        /**
          * Executes an incoming request.
          * 
          * <p>SessionInitiators can be run either directly by incoming web requests
@@ -62,6 +88,7 @@ namespace shibsp {
 
 #ifndef SHIBSP_LITE
         const char* getType() const;
+        void generateMetadata(opensaml::saml2md::SPSSODescriptor& role, const char* handlerURL) const;
 #endif
     };
     
@@ -93,4 +120,4 @@ namespace shibsp {
     #define COOKIE_SESSION_INITIATOR "Cookie"
 };
 
-#endif /* __shibsp_initiator_h__ */
+#endif /* __shibsp_sesinitiator_h__ */