Changeset 380

Show
Ignore:
Timestamp:
08/31/06 21:01:05 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/cherokee/balancer.c

    r372 r380  
    103103 
    104104ret_t  
    105 cherokee_balancer_add_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host) 
     105cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host) 
    106106{ 
    107107        if (balancer->dispatch == NULL) 
  • cherokee/trunk/cherokee/balancer.h

    r379 r380  
    7070} cherokee_balancer_t; 
    7171 
     72#define BAL(b)  ((cherokee_balancer_t *)(b)) 
    7273 
    73 ret_t cherokee_balancer_init_base     (cherokee_balancer_t *balancer); 
    74 ret_t cherokee_balancer_mrproper      (cherokee_balancer_t *balancer); 
     74ret_t cherokee_balancer_init_base  (cherokee_balancer_t *balancer); 
     75ret_t cherokee_balancer_mrproper   (cherokee_balancer_t *balancer); 
    7576 
    76 ret_t cherokee_balancer_add_host      (cherokee_balancer_t *balancer, cherokee_balancer_host_t *host); 
    77 ret_t cherokee_balancer_add_dispatch  (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host); 
    78 ret_t cherokee_balancer_free          (cherokee_balancer_t *balancer); 
     77ret_t cherokee_balancer_add_host   (cherokee_balancer_t *balancer, cherokee_balancer_host_t *host); 
     78 
     79/* Virtual methods 
     80 */ 
     81ret_t cherokee_balancer_dispatch   (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host); 
     82ret_t cherokee_balancer_free       (cherokee_balancer_t *balancer); 
    7983 
    8084CHEROKEE_END_DECLS 
  • cherokee/trunk/cherokee/balancer_round_robin.c

    r379 r380  
    3030 
    3131ret_t  
    32 cherokee_balancer_round_robin_new (cherokee_balancer_t **hdl, cherokee_connection_t *cnt, cherokee_balancer_props_t *props) 
     32cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props) 
    3333{ 
    3434        return ret_ok; 
     
    3636 
    3737ret_t  
    38 cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props) 
     38cherokee_balancer_round_robin_new (cherokee_balancer_t **bal, cherokee_connection_t *cnt, cherokee_balancer_props_t *props) 
    3939{ 
     40        CHEROKEE_NEW_STRUCT (n, balancer_round_robin); 
     41 
     42        /* Init          
     43         */ 
     44        cherokee_balancer_init_base (BAL(n)); 
     45 
     46        MODULE(n)->free  = (module_func_free_t) cherokee_balancer_round_robin_free; 
     47        BAL(n)->dispatch = (balancer_dispatch_func_t) cherokee_balancer_round_robin_dispatch; 
     48 
     49        /* Init properties 
     50         */ 
     51        n->last_one = 0; 
     52        CHEROKEE_MUTEX_INIT (&n->last_one_mutex, NULL); 
     53 
     54        /* Return obj 
     55         */ 
     56        *bal = BAL(n); 
    4057        return ret_ok; 
    4158} 
    4259 
    4360 
     61ret_t       
     62cherokee_balancer_round_robin_free (cherokee_balancer_round_robin_t *balancer) 
     63{ 
     64        CHEROKEE_MUTEX_DESTROY (&balancer->last_one_mutex); 
     65        return ret_ok; 
     66} 
     67 
     68 
     69ret_t 
     70cherokee_balancer_round_robin_dispatch (cherokee_balancer_round_robin_t *balancer,  
     71                                        cherokee_connection_t           *conn,  
     72                                        cherokee_balancer_host_t       **host) 
     73{ 
     74        cherokee_balancer_t *gbal = BAL(balancer); 
     75 
     76        CHEROKEE_MUTEX_LOCK (&balancer->last_one_mutex); 
     77 
     78        if (gbal->hosts_len <= 0) 
     79                goto error; 
     80         
     81        balancer->last_one = (balancer->last_one + 1) % gbal->hosts_len; 
     82        *host = gbal->hosts[balancer->last_one]; 
     83 
     84        CHEROKEE_MUTEX_UNLOCK (&balancer->last_one_mutex); 
     85        return ret_ok; 
     86 
     87error: 
     88        CHEROKEE_MUTEX_UNLOCK (&balancer->last_one_mutex); 
     89        return ret_error; 
     90} 
     91 
     92 
     93/* Module stuff 
     94 */ 
    4495 
    4596MODULE_INFO_INIT_EASY (balancer, round_robin); 
  • cherokee/trunk/cherokee/balancer_round_robin.h

    r379 r380  
    3131 
    3232typedef struct { 
    33         cherokee_balancer_t balancer; 
     33        cherokee_balancer_t  balancer; 
     34 
     35        cuint_t              last_one; 
     36#ifdef HAVE_PTHREAD 
     37        pthread_mutex_t      last_one_mutex; 
     38#endif   
    3439} cherokee_balancer_round_robin_t; 
    3540 
     
    3742#define PROP_RR(x)      ((cherokee_balancer_round_robin_props_t *)(x)) 
    3843#define BAL_RR(x)       ((cherokee_balancer_round_robin_file_t *)(x)) 
    39 #define BAL_RR_PROP(x)  (PROP_RR(BALANCER(x)->props)) 
     44#define BAL_RR_PROP(x)  (PROP_RR(BAL(x)->props)) 
    4045 
    4146 
     
    4348ret_t cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props); 
    4449 
     50ret_t cherokee_balancer_round_robin_free      (cherokee_balancer_round_robin_t *balancer); 
     51ret_t cherokee_balancer_round_robin_dispatch  (cherokee_balancer_round_robin_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host); 
     52 
     53 
    4554#endif /* CHEROKEE_BALANCER_ROUND_ROBIN_H */