Changeset 380
- Timestamp:
- 08/31/06 21:01:05 (2 years ago)
- Files:
-
- cherokee/trunk/cherokee/balancer.c (modified) (1 diff)
- cherokee/trunk/cherokee/balancer.h (modified) (1 diff)
- cherokee/trunk/cherokee/balancer_round_robin.c (modified) (2 diffs)
- cherokee/trunk/cherokee/balancer_round_robin.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/cherokee/balancer.c
r372 r380 103 103 104 104 ret_t 105 cherokee_balancer_ add_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host)105 cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host) 106 106 { 107 107 if (balancer->dispatch == NULL) cherokee/trunk/cherokee/balancer.h
r379 r380 70 70 } cherokee_balancer_t; 71 71 72 #define BAL(b) ((cherokee_balancer_t *)(b)) 72 73 73 ret_t cherokee_balancer_init_base (cherokee_balancer_t *balancer);74 ret_t cherokee_balancer_mrproper (cherokee_balancer_t *balancer);74 ret_t cherokee_balancer_init_base (cherokee_balancer_t *balancer); 75 ret_t cherokee_balancer_mrproper (cherokee_balancer_t *balancer); 75 76 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); 77 ret_t cherokee_balancer_add_host (cherokee_balancer_t *balancer, cherokee_balancer_host_t *host); 78 79 /* Virtual methods 80 */ 81 ret_t cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host); 82 ret_t cherokee_balancer_free (cherokee_balancer_t *balancer); 79 83 80 84 CHEROKEE_END_DECLS cherokee/trunk/cherokee/balancer_round_robin.c
r379 r380 30 30 31 31 ret_t 32 cherokee_balancer_round_robin_ new (cherokee_balancer_t **hdl, cherokee_connection_t *cnt, cherokee_balancer_props_t*props)32 cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props) 33 33 { 34 34 return ret_ok; … … 36 36 37 37 ret_t 38 cherokee_balancer_round_robin_ configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props)38 cherokee_balancer_round_robin_new (cherokee_balancer_t **bal, cherokee_connection_t *cnt, cherokee_balancer_props_t *props) 39 39 { 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); 40 57 return ret_ok; 41 58 } 42 59 43 60 61 ret_t 62 cherokee_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 69 ret_t 70 cherokee_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 87 error: 88 CHEROKEE_MUTEX_UNLOCK (&balancer->last_one_mutex); 89 return ret_error; 90 } 91 92 93 /* Module stuff 94 */ 44 95 45 96 MODULE_INFO_INIT_EASY (balancer, round_robin); cherokee/trunk/cherokee/balancer_round_robin.h
r379 r380 31 31 32 32 typedef 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 34 39 } cherokee_balancer_round_robin_t; 35 40 … … 37 42 #define PROP_RR(x) ((cherokee_balancer_round_robin_props_t *)(x)) 38 43 #define BAL_RR(x) ((cherokee_balancer_round_robin_file_t *)(x)) 39 #define BAL_RR_PROP(x) (PROP_RR(BAL ANCER(x)->props))44 #define BAL_RR_PROP(x) (PROP_RR(BAL(x)->props)) 40 45 41 46 … … 43 48 ret_t cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props); 44 49 50 ret_t cherokee_balancer_round_robin_free (cherokee_balancer_round_robin_t *balancer); 51 ret_t cherokee_balancer_round_robin_dispatch (cherokee_balancer_round_robin_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host); 52 53 45 54 #endif /* CHEROKEE_BALANCER_ROUND_ROBIN_H */