liMemcachedCon* li_memcached_con_new(liEventLoop *loop, liSocketAddress addr) { liMemcachedCon* con = g_slice_new0(liMemcachedCon); con->refcount = 1; con->addr = li_sockaddr_dup(addr); con->tmpstr = g_string_sized_new(511); con->fd = -1; li_event_io_init(loop, "memcached", &con->con_watcher, memcached_io_cb, -1, 0); li_event_set_keep_loop_alive(&con->con_watcher, FALSE); memcached_connect(con); return con; }
static balancer* balancer_new(liWorker *wrk, liPlugin *p, balancer_method method) { balancer *b = g_slice_new0(balancer); b->wrk = wrk; b->lock = g_mutex_new(); b->backends = g_array_new(FALSE, TRUE, sizeof(backend)); b->method = method; b->state = BAL_ALIVE; b->p = p; b->backlog_limit = -1; li_event_timer_init(&wrk->loop, &b->backlog_timer, balancer_timer_cb); li_event_set_keep_loop_alive(&b->backlog_timer, FALSE); li_event_async_init(&wrk->loop, &b->async, balancer_async_cb); return b; }