* replaced __thread with pthread_key_t/pthread_setspecific
[strongswan.git] / src / manager / lib / dispatcher.h
index 5119a1e..2748378 100644 (file)
@@ -40,6 +40,9 @@ struct dispatcher_t {
        /**
         * @brief Register a controller to the dispatcher.
         *
+        * The first controller added serves as default controller. Client's
+        * get redirected to it if no other controller matches.
+        *
         * @param constructor   constructor function to the conntroller
         * @param param                 param to pass to constructor
         */
@@ -49,9 +52,20 @@ struct dispatcher_t {
        /**
         * @brief Start with dispatching.
         *
+        * It may be necessary to call per-thread initialization functions. 
+        * If init is not NULL, the handler is called right after thread
+        * creation (by the created thread) and the deinit function is called
+        * before the thread gets destroyed (again by the thread itself).
+        *
         * @param thread                number of dispatching threads
+        * @param init                  thread specific initialization function, or NULL
+        * @param init_param    param to pass to init function
+        * @param deinit                thread dpecific deinitialization function, or NULL
+        * @param deinit_param  param to pass to deinit function
         */
-       void (*run)(dispatcher_t *this, int threads);
+       void (*run)(dispatcher_t *this, int threads,
+                               void(*init)(void *param), void *init_param,
+                               void(*deinit)(void *param), void *deinit_param);
        
        /**
         * @brief Wait for a relevant signal action.
@@ -70,9 +84,12 @@ struct dispatcher_t {
  * The context constructor is invoked to create a session context for
  * each session.
  *
+ * @param socket               FastCGI socket path, NULL for dynamic
+ * @param timeout              session timeout
  * @param constructor  construction function for session context
  * @param param                        parameter to supply to context constructor
  */
-dispatcher_t *dispatcher_create(context_constructor_t constructor, void *param);
+dispatcher_t *dispatcher_create(char *socket, int timeout,
+                                                               context_constructor_t constructor, void *param);
 
 #endif /* DISPATCHER_H_ */