Apache HTTPD
Modules | Macros | Functions | Variables
Hook Functions

Modules

 Hook probe capability
 
 Optional Hook Functions
 

Macros

#define APR_IMPLEMENT_HOOK_GET_PROTO(ns, link, name)   link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void)
 
#define APR_DECLARE_EXTERNAL_HOOK(ns, link, ret, name, args)
 
#define APR_HOOK_STRUCT(members)   static struct { members } _hooks;
 
#define APR_HOOK_LINK(name)    apr_array_header_t *link_##name;
 
#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns, link, name)
 
#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ns, link, name, args_decl, args_use)
 
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ns, link, ret, name, args_decl, args_use, ok, decline)
 
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns, link, ret, name, args_decl, args_use, decline)
 
#define APR_HOOK_REALLY_FIRST   (-10)
 
#define APR_HOOK_FIRST   0
 
#define APR_HOOK_MIDDLE   10
 
#define APR_HOOK_LAST   20
 
#define APR_HOOK_REALLY_LAST   30
 

Functions

 APU_DECLARE (void) apr_hook_sort_register(const char *szHookName
 

Variables

APU_DECLARE_DATA apr_pool_tapr_hook_global_pool
 
APU_DECLARE_DATA int apr_hook_debug_enabled
 
APU_DECLARE_DATA const charapr_hook_debug_current
 
apr_array_header_t ** aHooks
 
const char *constaszPre
 
const char *const const char *constaszSucc
 

Detailed Description

Macro Definition Documentation

◆ APR_DECLARE_EXTERNAL_HOOK

#define APR_DECLARE_EXTERNAL_HOOK (   ns,
  link,
  ret,
  name,
  args 
)
Value:
typedef ret ns##_HOOK_##name##_t args; \
link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \
const char * const *aszPre, \
const char * const *aszSucc, int nOrder); \
typedef struct ns##_LINK_##name##_t \
{ \
ns##_HOOK_##name##_t *pFunc; \
const char *szName; \
const char * const *aszPredecessors; \
const char * const *aszSuccessors; \
int nOrder; \
} ns##_LINK_##name##_t;
const char *const const char *const * aszSucc
Definition apr_hooks.h:346
const char *const * aszPre
Definition apr_hooks.h:345
void(*) const char *const const char *const in nOrder)
apr_size_t size
const char const char *const * args
char * name
#define ns(x)
Definition xmltok.c:1644

macro to declare the hook correctly

Definition at line 118 of file apr_hooks.h.

◆ APR_HOOK_FIRST

#define APR_HOOK_FIRST   0

run this hook first

Definition at line 301 of file apr_hooks.h.

◆ APR_HOOK_LAST

#define APR_HOOK_LAST   20

run this hook after every other hook which is defined

Definition at line 305 of file apr_hooks.h.

◆ APR_HOOK_LINK

#define APR_HOOK_LINK (   name)     apr_array_header_t *link_##name;

macro to link the hook structure

Definition at line 139 of file apr_hooks.h.

◆ APR_HOOK_MIDDLE

#define APR_HOOK_MIDDLE   10

run this hook somewhere

Definition at line 303 of file apr_hooks.h.

◆ APR_HOOK_REALLY_FIRST

#define APR_HOOK_REALLY_FIRST   (-10)

run this hook first, before ANYTHING

Definition at line 299 of file apr_hooks.h.

◆ APR_HOOK_REALLY_LAST

#define APR_HOOK_REALLY_LAST   30

run this hook last, after EVERYTHING

Definition at line 307 of file apr_hooks.h.

◆ APR_HOOK_STRUCT

#define APR_HOOK_STRUCT (   members)    static struct { members } _hooks;

macro to declare the hook structure

Definition at line 135 of file apr_hooks.h.

◆ APR_IMPLEMENT_EXTERNAL_HOOK_BASE

#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE (   ns,
  link,
  name 
)
Value:
link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf,const char * const *aszPre, \
const char * const *aszSucc,int nOrder) \
{ \
if(!_hooks.link_##name) \
{ \
} \
pHook->pFunc=pf; \
pHook->aszPredecessors=aszPre; \
pHook->aszSuccessors=aszSucc; \
pHook->nOrder=nOrder; \
} \
{ \
return _hooks.link_##name; \
}
APU_DECLARE_DATA const char * apr_hook_debug_current
Definition apr_hooks.c:38
APU_DECLARE_DATA int apr_hook_debug_enabled
Definition apr_hooks.c:37
APU_DECLARE_DATA apr_pool_t * apr_hook_global_pool
Definition apr_hooks.c:36
static struct @4 _hooks

macro to implement the hook

Definition at line 143 of file apr_hooks.h.

◆ APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL

#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL (   ns,
  link,
  ret,
  name,
  args_decl,
  args_use,
  ok,
  decline 
)
Value:
{ \
int n; \
ret rv = ok; \
if(_hooks.link_##name) \
{ \
pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \
for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
{ \
APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \
rv=pHook[n].pFunc args_use; \
APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, rv, args_use); \
if(rv != ok && rv != decline) \
break; \
rv = ok; \
} \
} \
\
return rv; \
}
int n
Definition ap_regex.h:278
#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns, link, name)
Definition apr_hooks.h:143
#define APR_HOOK_INT_DCL_UD
Definition apr_hooks.h:58

Implement a hook that runs until one of the functions returns something other than OK or DECLINE

Parameters
nsThe namespace prefix of the hook functions
linkThe linkage declaration prefix of the hook
retType to return
nameThe name of the hook
args_declThe declaration of the arguments for the hook
args_useThe names for the arguments for the hook
okSuccess value
declineDecline value
Note
The link prefix FOO corresponds to FOO_DECLARE() macros, which provide export linkage from the module that IMPLEMENTs the hook, and import linkage from external modules that link to the hook's module.

Definition at line 222 of file apr_hooks.h.

◆ APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST

#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST (   ns,
  link,
  ret,
  name,
  args_decl,
  args_use,
  decline 
)
Value:
{ \
int n; \
ret rv = decline; \
if(_hooks.link_##name) \
{ \
pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \
for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
{ \
APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \
rv=pHook[n].pFunc args_use; \
APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, rv, args_use); \
if(rv != decline) \
break; \
} \
} \
\
return rv; \
}

Implement a hook that runs until the first function returns something other than the value of decline

Parameters
nsThe namespace prefix of the hook functions
linkThe linkage declaration prefix of the hook
nameThe name of the hook
retType to return
args_declThe declaration of the arguments for the hook
args_useThe names for the arguments for the hook
declineDecline value
Note
The link prefix FOO corresponds to FOO_DECLARE() macros, which provide export linkage from the module that IMPLEMENTs the hook, and import linkage from external modules that link to the hook's module.

Definition at line 267 of file apr_hooks.h.

◆ APR_IMPLEMENT_EXTERNAL_HOOK_VOID

#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID (   ns,
  link,
  name,
  args_decl,
  args_use 
)
Value:
link##_DECLARE(void) ns##_run_##name args_decl \
{ \
int n; \
if(_hooks.link_##name) \
{ \
pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \
for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
{ \
APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \
pHook[n].pFunc args_use; \
APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, 0, args_use); \
} \
} \
\
}

Implement a hook that has no return code, and therefore runs all of the registered functions

Parameters
nsThe namespace prefix of the hook functions
linkThe linkage declaration prefix of the hook
nameThe name of the hook
args_declThe declaration of the arguments for the hook
args_useThe names for the arguments for the hook
Note
The link prefix FOO corresponds to FOO_DECLARE() macros, which provide export linkage from the module that IMPLEMENTs the hook, and import linkage from external modules that link to the hook's module.

Definition at line 179 of file apr_hooks.h.

◆ APR_IMPLEMENT_HOOK_GET_PROTO

#define APR_IMPLEMENT_HOOK_GET_PROTO (   ns,
  link,
  name 
)    link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void)

macro to return the prototype of the hook function

Definition at line 114 of file apr_hooks.h.

Function Documentation

◆ APU_DECLARE()

APU_DECLARE ( void  ) const

Register a hook function to be sorted.

Parameters
szHookNameThe name of the Hook the function is registered for
aHooksThe array which stores all of the functions for this hook

Sort all of the registered functions for a given hook.

Print all of the information about the current hook. This is used for debugging purposes.

Parameters
szNameThe name of the hook
aszPreAll of the functions in the predecessor array
aszSuccAll of the functions in the successor array

Remove all currently registered functions.

Variable Documentation

◆ aHooks

Definition at line 331 of file apr_hooks.h.

◆ apr_hook_debug_current

APU_DECLARE_DATA const char* apr_hook_debug_current
extern

The name of the module that is currently registering a function.

Definition at line 38 of file apr_hooks.c.

◆ apr_hook_debug_enabled

APU_DECLARE_DATA int apr_hook_debug_enabled
extern

A global variable to determine if debugging information about the hooks functions should be printed.

Definition at line 37 of file apr_hooks.c.

◆ apr_hook_global_pool

APU_DECLARE_DATA apr_pool_t* apr_hook_global_pool
extern

The global pool used to allocate any memory needed by the hooks.

Definition at line 36 of file apr_hooks.c.

◆ aszPre

const char* const* aszPre

Definition at line 345 of file apr_hooks.h.

◆ aszSucc

Definition at line 346 of file apr_hooks.h.