8 #ifndef CPPCMS_APPLICATIONS_POOL_H 9 #define CPPCMS_APPLICATIONS_POOL_H 11 #include <cppcms/defs.h> 12 #include <booster/noncopyable.h> 13 #include <booster/hold_ptr.h> 14 #include <booster/intrusive_ptr.h> 15 #include <booster/shared_ptr.h> 16 #include <booster/weak_ptr.h> 17 #include <booster/enable_shared_from_this.h> 19 #include <booster/auto_ptr_inc.h> 38 class application_specific_pool;
39 class applications_pool;
57 static const int legacy = 0x8000;
124 class _async_legacy_policy;
125 class _legacy_pool_policy;
158 virtual std::auto_ptr<application> operator()(
service &)
const = 0;
170 void mount(std::auto_ptr<factory> aps);
180 void mount(std::auto_ptr<factory> aps,
mount_point const &point);
247 get(
char const *h,
char const *s,
char const *path_info,std::string &match);
250 get_application_specific_pool(
char const *h,
char const *s,
char const *path_info,std::string &match);
270 std::auto_ptr<application> operator()(
service &s)
const 272 std::auto_ptr<application> app(
new T(s));
276 template<
typename T,
typename P1>
279 simple_factory1(P1 p1) : p1_(p1) {}
281 std::auto_ptr<application> operator()(
service &s)
const 283 std::auto_ptr<application> app(
new T(s,p1_));
287 template<
typename T,
typename P1,
typename P2>
290 simple_factory2(P1 p1,P2 p2) : p1_(p1),p2_(p2) {}
293 std::auto_ptr<application> operator()(
service &s)
const 295 std::auto_ptr<application> app(
new T(s,p1_,p2_));
312 std::auto_ptr<applications_pool::factory> f(
new details::simple_factory0<T>);
322 template<
typename T,
typename P1>
325 std::auto_ptr<applications_pool::factory> f(
new details::simple_factory1<T,P1>(p1));
335 template<
typename T,
typename P1,
typename P2>
338 std::auto_ptr<applications_pool::factory> f(
new details::simple_factory2<T,P1,P2>(p1,p2));
352 template<
typename T,
typename P1>
355 simple_application_specific_pool1(P1 p1) : p1_(p1) {}
362 template<
typename T,
typename P1,
typename P2>
365 simple_application_specific_pool2(P1 p1,P2 p2) : p1_(p1),p2_(p2) {}
370 return new T(s,p1_,p2_);
392 template<
typename T,
typename P1>
403 template<
typename T,
typename P1,
typename P2>
static const int asynchronous
Asynchronous application that operates in asynchronous mode.
Definition: applications_pool.h:50
static const int thread_specific
Make synchronous application thread specific.
Definition: applications_pool.h:54
static const int op_mode_mask
mask to select sync vs async flags
Definition: applications_pool.h:52
a base class for user application factories - to be deprecated, use application_specific_pool instead...
Definition: applications_pool.h:154
This class represent the central event loop of the CppCMS applications.
Definition: service.h:62
std::auto_ptr< applications_pool::factory > applications_factory()
Definition: applications_pool.h:310
This is the namespace where all CppCMS functionality is placed.
Definition: application.h:19
context is a central class that holds all specific connection related information. It encapsulates CGI request and response, cache, session and locale information
Definition: http_context.h:47
booster::shared_ptr< application_specific_pool > create_pool()
Definition: applications_pool.h:382
intrusive_ptr is the class taken as-is from boost.
Definition: intrusive_ptr.h:42
This class represents application's mount point or the rule on which specific application is selected...
Definition: mount_point.h:24
application class is the base class for all user created applications.
Definition: application.h:82
static const int prepopulated
Make sure all applications are created from the beginning (ignored in thread_specific is set) ...
Definition: applications_pool.h:55
an interface for creating user applications
Definition: applications_pool.h:66
static const int synchronous
Synchronous application.
Definition: applications_pool.h:49
Application pool is the central class that holds user created applications.
Definition: applications_pool.h:145
This class is borrowed from boost.
Definition: enable_shared_from_this.h:30
static const int content_filter
Definition: applications_pool.h:56
Booster library namespace. The library that implements Boost Like API in ABI backward compatible way...
Definition: application.h:23
this is the central event loop that dispatches all requests.
Definition: io_service.h:37
This class makes impossible to copy any class derived from this one.
Definition: noncopyable.h:15