コード例 #1
0
ファイル: xnbd.c プロジェクト: dellastreet/NBD-SparseImager
void do_service(struct xnbd_session *ses)
{
	int ret;
	struct xnbd_info *xnbd = ses->xnbd;
	

	if (xnbd->proxymode) {
		dbg("proxy mode");
		ret = proxy_server(ses);
	} else {
		dbg("target mode");
		//xnbd->migrating_to_target = 0;
		if (xnbd->cow)
			ret = target_server_cow(ses);
		else
			ret = target_server(ses);
	}


	info("process got out from main loop, ret %d", ret);


//	if (xnbd->migrating_to_target) {
//		xnbd->proxymode = 0;
//		//xnbd->migrating_to_target = 0;
//		xnbd->diskpath = xnbd->cachepath;
//		goto serve_again;
//	}
//
	info("shutdown xnbd done");
}
コード例 #2
0
ファイル: proxy.c プロジェクト: egall/Networking
void proxy_start(int listenport, char *extproxyaddr, int extproxyport, int (*callback_fn)(), int comeback, int singlethread)
{
	//printf("proxy_start: listenport = %d\n", listenport);

	proxy_listenport = listenport;
	proxy_extproxyaddr = extproxyaddr != NULL ? strdup(extproxyaddr) : NULL;
	proxy_extproxyport = extproxyport;
	proxy_callback_fn = callback_fn;

	//proxy_singlethread = 1;
	proxy_singlethread = singlethread;

	if (comeback)
		LaunchThread(proxy_server, NULL);
	else
		proxy_server(NULL);

}