shibboleth-3.4.1
shibsp::RemotedHandler Class Reference

Base class for handlers that need HTTP request/response layer to be remoted. More...

#include <shibsp/handler/RemotedHandler.h>

Inheritance diagram for shibsp::RemotedHandler:
shibsp::Handler shibsp::Remoted shibsp::PropertySet shibsp::AssertionConsumerService shibsp::LogoutHandler shibsp::LogoutInitiator

Static Public Member Functions

static void addRemotedHeader (const char *header)
 Ensures that a request header will be remoted. More...
 

Protected Member Functions

void setAddress (const char *address)
 Establishes message remoting using the supplied address. More...
 
virtual DDF send (const SPRequest &request, DDF &in) const
 Send a remoted message and return the response. More...
 
DDF wrap (const SPRequest &request, const std::vector< std::string > *headers=nullptr, bool certs=false) const
 Wraps a request by creating an outgoing data flow with the data needed to remote the request information. More...
 
virtual std::pair< bool, long > unwrap (SPRequest &request, DDF &out) const
 Unwraps a response by examining an incoming data flow to determine whether a response was produced by the remoted handler. More...
 
xmltooling::HTTPRequest * getRequest (const Application &app, DDF &in) const
 Builds a new request instance around a remoted data object. More...
 
xmltooling::HTTPResponse * getResponse (const Application &app, DDF &out) const
 Builds a new response instance around an outgoing data object. More...
 
xmltooling::HTTPRequest * getRequest (DDF &in) const
 
xmltooling::HTTPResponse * getResponse (DDF &out) const
 
- Protected Member Functions inherited from shibsp::Handler
virtual void log (SPRequest::SPLogLevel level, const std::string &msg) const
 Log using handler's specific logging object. More...
 
virtual void cleanRelayState (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response) const
 Prevents unused relay state from building up by cleaning old state from the client. More...
 
virtual void preserveRelayState (const Application &application, xmltooling::HTTPResponse &response, std::string &relayState) const
 Implements various mechanisms to preserve RelayState, such as cookies or StorageService-backed keys. More...
 
virtual void recoverRelayState (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, std::string &relayState, bool clear=true) const
 Implements various mechanisms to recover RelayState, such as cookies or StorageService-backed keys. More...
 

Protected Attributes

std::string m_address
 Message address for remote half. More...
 

Additional Inherited Members

- Public Member Functions inherited from shibsp::Handler
virtual const XMLCh * getProtocolFamily () const
 Returns an identifier for the protocol family associated with the handler, if any. More...
 
virtual std::pair< bool, long > run (SPRequest &request, bool isHandler=true) const =0
 Executes handler functionality as an incoming request. More...
 
virtual void generateMetadata (opensaml::saml2md::SPSSODescriptor &role, const char *handlerURL) const
 Generates and/or modifies metadata reflecting the Handler. More...
 
virtual const char * getType () const
 Returns the "type" of the Handler plugin. More...
 
virtual const char * getEventType () const
 Get the type of event, as input to error handling in response to errors raised by this handler. More...
 
- Public Member Functions inherited from shibsp::PropertySet
virtual const PropertySetgetParent () const =0
 Returns parent of this PropertySet, if any. More...
 
virtual void setParent (const PropertySet *parent)=0
 Establishes a "parent" PropertySet to supply inherited settings. More...
 
virtual std::pair< bool, bool > getBool (const char *name, const char *ns=nullptr) const =0
 Returns a boolean-valued property. More...
 
virtual std::pair< bool, const char * > getString (const char *name, const char *ns=nullptr) const =0
 Returns a string-valued property. More...
 
virtual std::pair< bool, const XMLCh * > getXMLString (const char *name, const char *ns=nullptr) const =0
 Returns a Unicode string-valued property. More...
 
virtual std::pair< bool, unsigned int > getUnsignedInt (const char *name, const char *ns=nullptr) const =0
 Returns an unsigned integer-valued property. More...
 
virtual std::pair< bool, int > getInt (const char *name, const char *ns=nullptr) const =0
 Returns an integer-valued property. More...
 
virtual const PropertySetgetPropertySet (const char *name, const char *ns=shibspconstants::ASCII_SHIBSPCONFIG_NS) const =0
 Returns a nested property set. More...
 
virtual const xercesc::DOMElement * getElement () const =0
 Returns a DOM element representing the property container, if any. More...
 
- Public Member Functions inherited from shibsp::Remoted
virtual void receive (DDF &in, std::ostream &out)=0
 Remoted classes implement this method to process incoming messages. More...
 

Detailed Description

Base class for handlers that need HTTP request/response layer to be remoted.

Member Function Documentation

◆ addRemotedHeader()

static void shibsp::RemotedHandler::addRemotedHeader ( const char *  header)
static

Ensures that a request header will be remoted.

Parameters
headername of request header to remote

◆ getRequest() [1/2]

xmltooling::HTTPRequest* shibsp::RemotedHandler::getRequest ( const Application app,
DDF in 
) const
protected

Builds a new request instance around a remoted data object.

Parameters
appthe application
inthe dataflow object containing the remoted request
Returns
a call-specific request object based on the input, to be freed by the caller

◆ getRequest() [2/2]

xmltooling::HTTPRequest* shibsp::RemotedHandler::getRequest ( DDF in) const
protected

Builds a new request instance around a remoted data object.

Parameters
appthe application
inthe dataflow object containing the remoted request
Returns
a call-specific request object based on the input, to be freed by the caller

◆ getResponse() [1/2]

xmltooling::HTTPResponse* shibsp::RemotedHandler::getResponse ( const Application app,
DDF out 
) const
protected

Builds a new response instance around an outgoing data object.

Parameters
appthe application
outthe dataflow object to be returned by the caller
Returns
a call-specific response object, to be freed by the caller

◆ getResponse() [2/2]

xmltooling::HTTPResponse* shibsp::RemotedHandler::getResponse ( DDF out) const
protected

Builds a new response instance around an outgoing data object.

Parameters
appthe application
outthe dataflow object to be returned by the caller
Returns
a call-specific response object, to be freed by the caller

◆ send()

virtual DDF shibsp::RemotedHandler::send ( const SPRequest request,
DDF in 
) const
protectedvirtual

Send a remoted message and return the response.

Parameters
ininput message to send
Returns
response from remote service

◆ setAddress()

void shibsp::RemotedHandler::setAddress ( const char *  address)
protected

Establishes message remoting using the supplied address.

Parameters
addressa unique "address" for remote message handling

◆ unwrap()

virtual std::pair<bool,long> shibsp::RemotedHandler::unwrap ( SPRequest request,
DDF out 
) const
protectedvirtual

Unwraps a response by examining an incoming data flow to determine whether a response was produced by the remoted handler.

Parameters
requestSP request context
outthe dataflow object to unpack
Returns
a pair containing a "request completed" indicator and a server-specific response code

◆ wrap()

DDF shibsp::RemotedHandler::wrap ( const SPRequest request,
const std::vector< std::string > *  headers = nullptr,
bool  certs = false 
) const
protected

Wraps a request by creating an outgoing data flow with the data needed to remote the request information.

Parameters
requestan SPRequest to remote
headersarray of additional request headers to copy to remote request
certstrue iff client certificates should be available for the remote request
Returns
the input dataflow object

Member Data Documentation

◆ m_address

std::string shibsp::RemotedHandler::m_address
protected

Message address for remote half.


The documentation for this class was generated from the following file: