コード例 #1
0
ファイル: network.c プロジェクト: FuangCao/cavan
static int app_network_service_main(int argc, char *argv[])
{
	int ret;
	struct cavan_dynamic_service *service;
	struct app_network_service *app_service;

	assert(argc > 1);

	service = cavan_dynamic_service_create(sizeof(struct app_network_service));
	if (service == NULL) {
		pr_red_info("cavan_dynamic_service_create");
		return -ENOMEM;
	}

	service->min = 20;
	service->max = 1000;
	service->verbose = true;
	service->name = "APP_NETWORK";
	service->conn_size = sizeof(struct network_client);
	service->start = app_network_start_handler;
	service->stop = app_network_stop_handler;
	service->run = app_network_run_handler;
	service->open_connect = app_network_open_connect;
	service->close_connect = app_network_close_connect;

	app_service = cavan_dynamic_service_get_data(service);
	app_service->url = argv[1];

	ret = cavan_dynamic_service_run(service);

	cavan_dynamic_service_destroy(service);

	return ret;
}
コード例 #2
0
ファイル: tcp_repeater.c プロジェクト: FuangCao/cavan
int main(int argc, char *argv[])
{
	int ret;
	struct cavan_tcp_repeater *repeater;
	struct cavan_dynamic_service *service;

	service = cavan_dynamic_service_create(sizeof(struct cavan_tcp_repeater));
	if (service == NULL) {
		pr_red_info("cavan_dynamic_service_create");
		return -ENOMEM;
	}

	service->min = 20;
	service->max = 1000;

	repeater = cavan_dynamic_service_get_data(service);
	network_url_init(&repeater->url, "tcp", "any", CAVAN_TCP_REPEATER_PORT, network_get_socket_pathname());

	ret = network_url_parse_cmdline(&repeater->url, service, argc, argv);
	if (ret < 0) {
		goto out_cavan_dynamic_service_destroy;
	}

	ret = cavan_tcp_repeater_run(service);

out_cavan_dynamic_service_destroy:
	cavan_dynamic_service_destroy(service);
	return ret;
}
コード例 #3
0
ファイル: ftp.c プロジェクト: Jack19881218/cavan
static int ftp_service_run_handler(struct cavan_dynamic_service *service, void *conn)
{
	struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service);

	return ftp_service_cmdline(ftp, conn);
}
コード例 #4
0
ファイル: ftp.c プロジェクト: Jack19881218/cavan
static void ftp_service_stop_handler(struct cavan_dynamic_service *service)
{
	struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service);

	network_service_close(&ftp->service);
}
コード例 #5
0
ファイル: ftp.c プロジェクト: Jack19881218/cavan
static int ftp_service_start_handler(struct cavan_dynamic_service *service)
{
	struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service);

	return network_service_open(&ftp->service, &ftp->url, 0);
}
コード例 #6
0
ファイル: ftp.c プロジェクト: Jack19881218/cavan
static int ftp_service_open_connect(struct cavan_dynamic_service *service, void *conn)
{
	struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service);

	return network_service_accept(&ftp->service, conn);
}
コード例 #7
0
ファイル: network.c プロジェクト: FuangCao/cavan
static int app_network_open_connect(struct cavan_dynamic_service *service, void *conn)
{
	struct app_network_service *app_service = cavan_dynamic_service_get_data(service);

	return network_service_accept(&app_service->service, conn);
}
コード例 #8
0
ファイル: network.c プロジェクト: FuangCao/cavan
static void app_network_stop_handler(struct cavan_dynamic_service *service)
{
	struct app_network_service *app_service = cavan_dynamic_service_get_data(service);

	network_service_close(&app_service->service);
}
コード例 #9
0
ファイル: network.c プロジェクト: FuangCao/cavan
static int app_network_start_handler(struct cavan_dynamic_service *service)
{
	struct app_network_service *app_service = cavan_dynamic_service_get_data(service);

	return network_service_open2(&app_service->service, app_service->url, 0);
}