]> git.sur5r.net Git - openldap/blob - servers/slapd/back-monitor/proto-back-monitor.h
rework subsystem initialization (can be added dynamically...)
[openldap] / servers / slapd / back-monitor / proto-back-monitor.h
1 /* $OpenLDAP$ */
2 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3  *
4  * Copyright 2001-2004 The OpenLDAP Foundation.
5  * Portions Copyright 2001-2003 Pierangelo Masarati.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted only as authorized by the OpenLDAP
10  * Public License.
11  *
12  * A copy of this license is available in file LICENSE in the
13  * top-level directory of the distribution or, alternatively, at
14  * <http://www.OpenLDAP.org/license.html>.
15  */
16 /* ACKNOWLEDGEMENTS:
17  * This work was initially developed by Pierangelo Masarati for inclusion
18  * in OpenLDAP Software.
19  */
20
21 #ifndef _PROTO_BACK_MONITOR
22 #define _PROTO_BACK_MONITOR
23
24 #include <ldap_cdefs.h>
25
26 #include "external.h"
27
28 LDAP_BEGIN_DECL
29
30 /*
31  * backends
32  */
33 int monitor_subsys_backend_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
34
35 /*
36  * cache
37  */
38 extern int monitor_cache_cmp LDAP_P(( const void *c1, const void *c2 ));
39 extern int monitor_cache_dup LDAP_P(( void *c1, void *c2 ));
40 extern int monitor_cache_add LDAP_P(( struct monitorinfo *mi, Entry *e ));
41 extern int monitor_cache_get LDAP_P(( struct monitorinfo *mi, struct berval *ndn, Entry **ep ));
42 extern int monitor_cache_dn2entry LDAP_P(( Operation *op, struct berval *ndn, Entry **ep, Entry **matched ));
43 extern int monitor_cache_lock LDAP_P(( Entry *e ));
44 extern int monitor_cache_release LDAP_P(( struct monitorinfo *mi, Entry *e ));
45
46 /*
47  * connections
48  */
49 int monitor_subsys_conn_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
50 int monitor_subsys_conn_update LDAP_P(( Operation *op, Entry *e ));
51 int monitor_subsys_conn_create LDAP_P(( Operation *op, struct berval *ndn,
52                         Entry *e_parent, Entry **ep ));
53
54 /*
55  * databases 
56  */
57 int monitor_subsys_database_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
58 int monitor_subsys_database_modify LDAP_P(( Operation *op, Entry *e ));
59
60 /*
61  * entry
62  */
63 extern int monitor_entry_update LDAP_P(( Operation *op, Entry *e ));
64 extern int monitor_entry_create LDAP_P(( Operation *op, struct berval *ndn,
65                 Entry *e_parent, Entry **ep ));
66 extern int monitor_entry_modify LDAP_P(( Operation *op, Entry *e ));
67 int monitor_entry_test_flags LDAP_P(( struct monitorentrypriv *mp, int cond ));
68
69 /*
70  * init
71  */
72 extern int monitor_back_register_subsys LDAP_P(( monitorsubsys *ms ));
73 extern monitorsubsys * monitor_back_get_subsys LDAP_P(( const char *name ));
74 extern monitorsubsys * monitor_back_get_subsys_by_dn LDAP_P(( struct berval *ndn, int sub ));
75
76 /*
77  * listener
78  */
79 int monitor_subsys_listener_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
80
81 /*
82  * log
83  */
84 int monitor_subsys_log_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
85 int monitor_subsys_log_modify LDAP_P(( Operation *op, Entry *e ));
86
87 /*
88  * operations
89  */
90 int monitor_subsys_ops_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
91 int monitor_subsys_ops_update LDAP_P(( Operation *op, Entry *e ));
92
93 /*
94  * overlay
95  */
96 int monitor_subsys_overlay_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
97
98 /*
99  * sent
100  */
101 int monitor_subsys_sent_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
102 int monitor_subsys_sent_update LDAP_P(( Operation *op, Entry *e ));
103
104 /*
105  * threads
106  */
107 int monitor_subsys_thread_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
108 int monitor_subsys_thread_update LDAP_P(( Operation *op, Entry *e ));
109
110 /*
111  * time
112  */
113 int monitor_subsys_time_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
114 int monitor_subsys_time_update LDAP_P(( Operation *op, Entry *e ));
115
116 /*
117  * waiters
118  */
119 int monitor_subsys_rww_init LDAP_P(( BackendDB *be, monitorsubsys *ms ));
120 int monitor_subsys_rww_update LDAP_P(( Operation *op, Entry *e ));
121
122 /* NOTE: this macro assumes that bv has been allocated
123  * by ber_* malloc functions or is { 0L, NULL } */
124 #if defined(HAVE_BIGNUM)
125 #define UI2BV(bv,ui) \
126         do { \
127                 char            *val; \
128                 ber_len_t       len; \
129                 val = BN_bn2dec(ui); \
130                 if (val) { \
131                         len = strlen(val); \
132                         if ( len > (bv)->bv_len ) { \
133                                 (bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
134                         } \
135                         AC_MEMCPY((bv)->bv_val, val, len + 1); \
136                         (bv)->bv_len = len; \
137                         OPENSSL_free(val); \
138                 } else { \
139                         ber_memfree( (bv)->bv_val ); \
140                         BER_BVZERO( (bv) ); \
141                 } \
142         } while ( 0 )
143 #elif defined(HAVE_GMP)
144 /* NOTE: according to the documentation, the result 
145  * of mpz_sizeinbase() can exceed the length of the
146  * string representation of the number by 1
147  */
148 #define UI2BV(bv,ui) \
149         do { \
150                 ber_len_t       len = mpz_sizeinbase( (ui), 10 ); \
151                 if ( len > (bv)->bv_len ) { \
152                         (bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
153                 } \
154                 (void)mpz_get_str( (bv)->bv_val, 10, (ui) ); \
155                 if ( (bv)->bv_val[ len - 1 ] == '\0' ) { \
156                         len--; \
157                 } \
158                 (bv)->bv_len = len; \
159         } while ( 0 )
160 #else /* ! HAVE_BIGNUM && ! HAVE_GMP */
161 #define UI2BV(bv,ui) \
162         do { \
163                 char            buf[] = "+9223372036854775807L"; \
164                 ber_len_t       len; \
165                 snprintf( buf, sizeof( buf ), "%lu", (ui) ); \
166                 len = strlen( buf ); \
167                 if ( len > (bv)->bv_len ) { \
168                         (bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
169                 } \
170                 AC_MEMCPY( (bv)->bv_val, buf, len + 1 ); \
171         } while ( 0 )
172 #endif /* ! HAVE_GMP */
173
174 LDAP_END_DECL
175
176 #endif /* _PROTO_BACK_MONITOR */
177