costin      02/04/29 12:32:01

  Modified:    jk/native2/common jk_shm.c
  Log:
  One more step.
  
  Revision  Changes    Path
  1.7       +36 -7     jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_shm.c  25 Apr 2002 19:18:39 -0000      1.6
  +++ jk_shm.c  29 Apr 2002 19:32:01 -0000      1.7
  @@ -96,7 +96,7 @@
   static apr_pool_t *globalShmPool;
   
   #define SHM_SET_ATTRIBUTE 0
  -#define SHM_REGISTER_TOMCAT 2
  +#define SHM_WRITE_SLOT 2
   #define SHM_ATTACH 3
   #define SHM_DETACH 4
   
  @@ -257,10 +257,19 @@
   {
       /* For now all slots are equal size
        */
  -    /* XXX interprocess sync */
  -    int slotId=shm->head->lastSlot++;
  +    int slotId;
  +    jk_shm_slot_t *slot;
       
  -    jk_shm_slot_t *slot= (void *)shm->image + slotId * shm->slotSize;
  +    for( i=1; i<shm->head->lastSlot; i++ ) {
  +        slot= shm->getSlot( env, shm, i );
  +        if( strncmp( slot->name, name ) == 0 ) {
  +            return slot;
  +        }
  +    }
  +    /* New slot */
  +    /* XXX interprocess sync */
  +    slotId=shm->head->lastSlot++;
  +    slot=shm->getSlot( env, shm, slotId );
       
       env->l->jkLog(env, env->l, JK_LOG_INFO, 
                     "shm.createSlot() Create %d %p %p\n", slotId, shm->image, slot );
  @@ -327,11 +336,31 @@
   
           return JK_OK;
       }
  -    case SHM_REGISTER_TOMCAT: {
  -
  +    case SHM_WRITE_SLOT: {
  +        char *instanceName=msg->getString( env, msg );
  +        jk_shm_slot *slot;
  +        
  +        env->l->jkLog(env, env->l, JK_LOG_INFO, 
  +                      "shm.registerTomcat() %s %d\n",
  +                      instanceName, msg->len );
  +        if( msg->len > shm->slotSize ) {
  +            env->l->jkLog(env, env->l, JK_LOG_ERROR, 
  +                          "shm.registerTomcat() Packet too large %d %d\n",
  +                          shm->slotSize, msg->len );
  +            return JK_ERR;
  +        }
  +        slot=shm->createSlot( env, shm, instanceName, 0 );
  +        
  +        /*  Copy the body in the slot */
  +        memcpy( slot->data, msg->buf, msg->len );
  +        slot->size=msg->len;
  +        slot->ver++;
  +        /* Update the head lb version number - that would triger
  +           reconf on the next request */
  +        shm->head->lbVer++;
           return JK_OK;
       }
  -    }
  +    }/* switch */
       return JK_ERR;
   }
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to