コード例 #1
0
ファイル: tcp_receiver.c プロジェクト: ahnufy/libpaxos
static void on_accept(struct evconnlistener* l, evutil_socket_t* fd, struct sockaddr* addr, int socklen, void *arg)
{
	struct tcp_receiver* r = arg;
	struct event_base* b = evconnlistener_get_base(l);
	struct bufferevent *bev = bufferevent_socket_new(b, fd, BEV_OPT_CLOSE_ON_FREE);
	/*设置读事件函数和错误函数*/
	bufferevent_setcb(bev, on_read, NULL, on_error, arg);
	/*设置监视的socket事件*/
	bufferevent_enable(bev, EV_READ|EV_WRITE);
	/*添加到事件管理器中*/
	carray_push_back(r->bevs, bev);

	paxos_log_info("Accepted connection from %s:%d", inet_ntoa(((struct sockaddr_in*)addr)->sin_addr), ntohs(((struct sockaddr_in*)addr)->sin_port));
}
コード例 #2
0
ファイル: carray.c プロジェクト: carpe-noctem-cassel/cace
static void
carray_grow(struct carray* a)
{
	int i;
	struct carray* tmp = carray_new(a->size * 2);
	for (i = 0; i < a->count; i++)
		carray_push_back(tmp, carray_at(a, i));
	free(a->array);
	a->head = 0;
	a->tail = tmp->tail;
	a->size = tmp->size;
	a->array = tmp->array;
	free(tmp);
}