]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-monitor/rww.c
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / servers / slapd / back-monitor / rww.c
index 0edea5d0792aa5967a8535326d145f3be5dafe51..61ac1c952c00ba96336d3c7863a76d4acdf9cdc1 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2001-2005 The OpenLDAP Foundation.
+ * Copyright 2001-2013 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.
  * All rights reserved.
  *
 #include "lutil.h"
 #include "back-monitor.h"
 
+static int
+monitor_subsys_rww_destroy(
+       BackendDB               *be,
+       monitor_subsys_t        *ms );
+
 static int
 monitor_subsys_rww_update(
        Operation               *op,
@@ -41,7 +46,7 @@ enum {
        MONITOR_RWW_LAST
 };
 
-struct monitor_rww_t {
+static struct monitor_rww_t {
        struct berval   rdn;
        struct berval   nrdn;
 } monitor_rww[] = {
@@ -53,8 +58,7 @@ struct monitor_rww_t {
 int
 monitor_subsys_rww_init(
        BackendDB               *be,
-       monitor_subsys_t        *ms
-)
+       monitor_subsys_t        *ms )
 {
        monitor_info_t  *mi;
        
@@ -64,6 +68,7 @@ monitor_subsys_rww_init(
 
        assert( be != NULL );
 
+       ms->mss_destroy = monitor_subsys_rww_destroy;
        ms->mss_update = monitor_subsys_rww_update;
 
        mi = ( monitor_info_t * )be->be_private;
@@ -81,30 +86,11 @@ monitor_subsys_rww_init(
        ep = &mp->mp_children;
 
        for ( i = 0; i < MONITOR_RWW_LAST; i++ ) {
-               char                    buf[ BACKMONITOR_BUFSIZE ];
                struct berval           nrdn, bv;
                Entry                   *e;
                
-               snprintf( buf, sizeof( buf ),
-                       "dn: %s,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: %s\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n",
-                       monitor_rww[ i ].rdn.bv_val,
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                       mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                       &monitor_rww[ i ].rdn.bv_val[ STRLENOF( "cn=" ) ],
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-       
-               e = str2entry( buf );
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &monitor_rww[i].rdn,
+                       mi->mi_oc_monitorCounterObject, NULL, NULL );
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_rww_init: "
@@ -118,7 +104,7 @@ monitor_subsys_rww_init(
                ber_dupbv( &monitor_rww[ i ].nrdn, &nrdn );
        
                BER_BVSTR( &bv, "0" );
-               attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, &bv );
+               attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, NULL );
        
                mp = monitor_entrypriv_create();
                if ( mp == NULL ) {
@@ -147,6 +133,20 @@ monitor_subsys_rww_init(
        return( 0 );
 }
 
+static int
+monitor_subsys_rww_destroy(
+       BackendDB               *be,
+       monitor_subsys_t        *ms )
+{
+       int             i;
+
+       for ( i = 0; i < MONITOR_RWW_LAST; i++ ) {
+               ber_memfree_x( monitor_rww[ i ].nrdn.bv_val, NULL );
+       }
+
+       return 0;
+}
+
 static int
 monitor_subsys_rww_update(
        Operation               *op,
@@ -155,14 +155,14 @@ monitor_subsys_rww_update(
 {
        monitor_info_t *mi = (monitor_info_t *)op->o_bd->be_private;
        Connection      *c;
-       int             connindex;
+       ber_socket_t    connindex;
        long            nconns, nwritewaiters, nreadwaiters;
 
        int             i;
        struct berval   nrdn;
 
        Attribute       *a;
-       char            buf[] = "+9223372036854775807L";
+       char            buf[LDAP_PVT_INTTYPE_CHARS(long)];
        long            num = 0;
        ber_len_t       len;