]> git.sur5r.net Git - openldap/commitdiff
move req2op selection into a helper
authorPierangelo Masarati <ando@openldap.org>
Mon, 4 Sep 2006 07:17:34 +0000 (07:17 +0000)
committerPierangelo Masarati <ando@openldap.org>
Mon, 4 Sep 2006 07:17:34 +0000 (07:17 +0000)
servers/slapd/connection.c
servers/slapd/operation.c
servers/slapd/proto-slap.h
servers/slapd/slap.h

index e57977ba0e1ad60548ab6a13188717ea4c3833c0..367ddf209eb0aacec61ffc425de09f5a8f3f740f 100644 (file)
@@ -1006,7 +1006,7 @@ connection_operation( void *ctx, void *arg_v )
        Operation *op = arg_v;
        SlapReply rs = {REP_RESULT};
        ber_tag_t tag = op->o_tag;
-       int opidx = -1;
+       slap_op_t opidx = SLAP_OP_LAST;
        Connection *conn = op->o_conn;
        void *memctx = NULL;
        void *memctx_null = NULL;
@@ -1089,53 +1089,8 @@ connection_operation( void *ctx, void *arg_v )
        }
        }
 
-       switch ( tag ) {
-       case LDAP_REQ_BIND:
-               opidx = SLAP_OP_BIND;
-               break;
-
-       case LDAP_REQ_UNBIND:
-               opidx = SLAP_OP_UNBIND;
-               break;
-
-       case LDAP_REQ_ADD:
-               opidx = SLAP_OP_ADD;
-               break;
-
-       case LDAP_REQ_DELETE:
-               opidx = SLAP_OP_DELETE;
-               break;
-
-       case LDAP_REQ_MODRDN:
-               opidx = SLAP_OP_MODRDN;
-               break;
-
-       case LDAP_REQ_MODIFY:
-               opidx = SLAP_OP_MODIFY;
-               break;
-
-       case LDAP_REQ_COMPARE:
-               opidx = SLAP_OP_COMPARE;
-               break;
-
-       case LDAP_REQ_SEARCH:
-               opidx = SLAP_OP_SEARCH;
-               break;
-
-       case LDAP_REQ_ABANDON:
-               opidx = SLAP_OP_ABANDON;
-               break;
-
-       case LDAP_REQ_EXTENDED:
-               opidx = SLAP_OP_EXTENDED;
-               break;
-
-       default:
-               /* not reachable */
-               assert( 0 );
-       }
-
-       assert( opidx > -1 );
+       opidx = slap_req2op( tag );
+       assert( opidx != SLAP_OP_LAST );
        INCR_OP_INITIATED( opidx );
        rc = (*(opfun[opidx]))( op, &rs );
 
@@ -1143,7 +1098,7 @@ operations_error:
        if ( rc == SLAPD_DISCONNECT ) {
                tag = LBER_ERROR;
 
-       } else if ( opidx > -1 ) {
+       } else if ( opidx != SLAP_OP_LAST ) {
                /* increment completed operations count 
                 * only if operation was initiated
                 * and rc != SLAPD_DISCONNECT */
index 13bb5cf590bbcc05e6f5adf1666035e004e2244a..2ffddce841d9d30a793f14b3c84195468ef7e160 100644 (file)
@@ -165,3 +165,32 @@ slap_op_alloc(
 
        return( op );
 }
+
+slap_op_t
+slap_req2op( ber_tag_t tag )
+{
+       switch ( tag ) {
+       case LDAP_REQ_BIND:
+               return SLAP_OP_BIND;
+       case LDAP_REQ_UNBIND:
+               return SLAP_OP_UNBIND;
+       case LDAP_REQ_ADD:
+               return SLAP_OP_ADD;
+       case LDAP_REQ_DELETE:
+               return SLAP_OP_DELETE;
+       case LDAP_REQ_MODRDN:
+               return SLAP_OP_MODRDN;
+       case LDAP_REQ_MODIFY:
+               return SLAP_OP_MODIFY;
+       case LDAP_REQ_COMPARE:
+               return SLAP_OP_COMPARE;
+       case LDAP_REQ_SEARCH:
+               return SLAP_OP_SEARCH;
+       case LDAP_REQ_ABANDON:
+               return SLAP_OP_ABANDON;
+       case LDAP_REQ_EXTENDED:
+               return SLAP_OP_EXTENDED;
+       }
+
+       return SLAP_OP_LAST;
+}
index b320565c9cd9f207c40a556e3ead87f7c7b26eb6..8246077f6c042a0a197576ec657c62a1133ee54c 100644 (file)
@@ -1256,6 +1256,7 @@ LDAP_SLAPD_F (Operation *) slap_op_alloc LDAP_P((
 LDAP_SLAPD_F (int) slap_op_add LDAP_P(( Operation **olist, Operation *op ));
 LDAP_SLAPD_F (int) slap_op_remove LDAP_P(( Operation **olist, Operation *op ));
 LDAP_SLAPD_F (Operation *) slap_op_pop LDAP_P(( Operation **olist ));
+LDAP_SLAPD_F (slap_op_t) slap_req2op LDAP_P(( ber_tag_t tag ));
 
 /*
  * operational.c
index 67dca3df488f6eb21a42b046ae31744ef3d4ddb3..0fcbcb62914b5fd9e226a4603c3c857b2727a3bf 100644 (file)
@@ -2733,7 +2733,7 @@ struct slap_listener {
 /*
  * Operation indices
  */
-enum {
+typedef enum {
        SLAP_OP_BIND = 0,
        SLAP_OP_UNBIND,
        SLAP_OP_ADD,
@@ -2745,7 +2745,7 @@ enum {
        SLAP_OP_ABANDON,
        SLAP_OP_EXTENDED,
        SLAP_OP_LAST
-};
+} slap_op_t;
 
 typedef struct slap_counters_t {
        ldap_pvt_thread_mutex_t sc_sent_mutex;