summaryrefslogtreecommitdiffabout
path: root/include/opkele/extension_chain.h
blob: f0eea94db9639f1f3b383da25f32e49f126daca4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef __OPKELE_EXTENSION_CHAIN_H
#define __OPKELE_EXTENSION_CHAIN_H

/**
 * @file
 * @brief extension chain extension
 */

#include <list>
#include <opkele/extension.h>

namespace opkele {
    using std::list;

    /**
     * OpenID extensions chain used to combine extensions, it is actually an
     * stl list of pointers to extensions.
     */
    class extension_chain_t : public extension_t, public list<extension_t*> {
	public:

	    /**
	     * Default constructor creates an empty chain
	     */
	    extension_chain_t() { }
	    /**
	     * Create extension chain with a single extension in it
	     */
	    extension_chain_t(extension_t *e) { push_back(e); }

	    virtual void checkid_hook(params_t& p,const string& identity);
	    virtual void id_res_hook(const params_t& p,const params_t& sp,const string& identity);
	    virtual void checkid_hook(const params_t& pin,params_t& pout);
    };

}

#endif /* __OPKELE_EXTENSION_CHAIN_H */