亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? walk_coords.c

?? 基于DHT的對等協議
?? C
字號:
#include "chord.h"#include "misc_utils.h"#include <id_utils.h>#include "math.h"#include "async.h"#include "transport_prot.h"#include "coord.h"#define TIMEOUT 10chordID wellknown_ID = -1;ptr<axprt_dgram> dgram_xprt;typedef callback<void, clnt_stat, vec<float>, float >::ptr aclnt_coords_cb;void getsucc_cb (chordID dest, str desthost, chord_nodelistextres *res, u_int64_t start, clnt_stat err, vec<float> coords, float e);void doRPCcb (chordID ID, int procno, dorpc_res *res, void *out, aclnt_coords_cb cb, 	      clnt_stat err);voidsetup () {  int dgram_fd = inetsocket (SOCK_DGRAM);  if (dgram_fd < 0) fatal << "Failed to allocate dgram socket\n";  dgram_xprt = axprt_dgram::alloc (dgram_fd, sizeof(sockaddr), 230000);  if (!dgram_xprt) fatal << "Failed to allocate dgram xprt\n";}ptr<aclnt>get_aclnt (str host, unsigned short port){  sockaddr_in saddr;  bzero(&saddr, sizeof(sockaddr_in));  saddr.sin_family = AF_INET;  inet_aton (host.cstr (), &saddr.sin_addr);  saddr.sin_port = htons (port);  ptr<aclnt> c = aclnt::alloc (dgram_xprt, transport_program_1, 			       (sockaddr *)&(saddr));  return c;}voiddoRPC (const chord_node &n, int procno, const void *in, void *out, aclnt_coords_cb cb){  ptr<aclnt> c = get_aclnt (n.r.hostname, n.r.port);  if (c == NULL)     fatal << "doRPC: couldn't aclnt::alloc\n"; //form the transport RPC  ptr<dorpc_arg> arg = New refcounted<dorpc_arg> ();  //header  struct sockaddr_in saddr;  bzero(&saddr, sizeof (sockaddr_in));  saddr.sin_family = AF_INET;  inet_aton (n.r.hostname.cstr (), &saddr.sin_addr);  arg->dest.machine_order_ipv4_addr = ntohl (saddr.sin_addr.s_addr);  arg->dest.machine_order_port_vnnum = (n.r.port << 16) | n.vnode_num;   //leave coords as random.  bzero (&arg->src, sizeof (arg->src));  arg->progno = chord_program_1.progno;  arg->procno = procno;    //marshall the args ourself  xdrproc_t inproc = chord_program_1.tbl[procno].xdr_arg;  xdrsuio x (XDR_ENCODE);  if ((!inproc) || (!inproc (x.xdrp (), (void *)in))) {    fatal << "failed to marshall args\n";  } else {    int args_len = x.uio ()->resid ();    arg->args.setsize (args_len);    x.uio ()->copyout (arg->args.base ());    dorpc_res *res = New dorpc_res (DORPC_OK);    c->timedcall (TIMEOUT, TRANSPORTPROC_DORPC, 		  arg, res, wrap (&doRPCcb, n.x, procno, res, out, cb));  }}  voiddoRPCcb (chordID ID, int procno, dorpc_res *res, void *out, aclnt_coords_cb cb, 	 clnt_stat err){  if (err) fatal << "RPC err\n";  vec<float> coords;  for (unsigned int i = 0; i < 3; i++)    coords.push_back ((float)res->resok->src.coords[i]);  xdrmem x ((char *)res->resok->results.base (), 	    res->resok->results.size (), XDR_DECODE);  xdrproc_t proc = chord_program_1.tbl[procno].xdr_res;  assert (proc);  if (!proc (x.xdrp (), out)) {    fatal << "failed to unmarshall result\n";  } else     cb (err, coords, (float)res->resok->src.e);  delete res;}voidgetsucc (const chord_node &n){  chord_nodelistextres *res = New chord_nodelistextres ();  u_int64_t start = getusec ();  doRPC (n, CHORDPROC_GETSUCC_EXT, &n.x, res,	 wrap (&getsucc_cb, n.x, n.r.hostname, res, start));}voidgetsucc_cb (chordID dest, str desthost, 	    chord_nodelistextres *res, u_int64_t start, clnt_stat err, vec<float> coords, float e){  assert (err == 0 && res->status == CHORD_OK);  assert (res->resok->nlist.size () >= 2);  if (coords.size () == 0)    warnx << dest << " " << desthost << "\n";  else {    char s[1024];    sprintf (s, "%f %f %f e=%f", coords[0], coords[1], coords[2], e/Coord::PRED_ERR_MULT);    warnx << dest << " " << desthost << " "	  << s << " "	  << (getusec () - start) << " "	  << "\n";  }  chord_node z = make_chord_node (res->resok->nlist[1].n);    // wrapped around ring. done.  if (z.x == wellknown_ID) {    warnx << getusec () << "--------------------------\n";    exit (0);  }  getsucc (z);}void usage (){  fatal << "walk -j <host>:<port>\n";}intmain (int argc, char** argv) {  setprogname (argv[0]);  random_init ();  setup ();  str host = "not set";  unsigned short port = 0;  errfd = 1;  int ch;  while ((ch = getopt (argc, argv, "h:j:a:l:f:is:")) != -1) {    switch (ch) {    case 'j':       {	char *bs_port = strchr(optarg, ':');	if (!bs_port) usage ();	*bs_port = 0;	bs_port++;	if (inet_addr (optarg) == INADDR_NONE) {	  //yep, this blocks	  struct hostent *h = gethostbyname (optarg);	  if (!h) {	    warn << "Invalid address or hostname: " << optarg << "\n";	    usage ();	  }	  struct in_addr *ptr = (struct in_addr *)h->h_addr;	  host = inet_ntoa (*ptr);	} else	  host = optarg;	port = atoi (bs_port);	break;      }    };  }  if (host == "not set")    usage ();      wellknown_ID = make_chordID (host, port, 0);  chord_node wellknown_node;  wellknown_node.x = wellknown_ID;  wellknown_node.r.hostname = host;  wellknown_node.r.port = port;  wellknown_node.vnode_num = 0;  getsucc (wellknown_node);  amain ();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区在线播放| 欧美一区二区三区成人| 中文字幕在线播放不卡一区| 成人午夜短视频| 亚洲色图视频网| 欧美亚洲高清一区| 日韩电影在线看| 日韩欧美国产三级电影视频| 国产美女视频91| 国产精品久久久久一区二区三区 | 欧美老人xxxx18| 首页国产欧美久久| 26uuu欧美| 99免费精品在线| 亚洲成人动漫在线免费观看| 欧美大度的电影原声| 国产夫妻精品视频| 亚洲激情自拍视频| 日韩视频一区二区三区在线播放 | 欧美精品一区二区不卡| av一二三不卡影片| 香蕉影视欧美成人| 26uuu亚洲| 欧美怡红院视频| 国产综合成人久久大片91| 中文字幕中文字幕在线一区| 欧美日韩国产一级片| 国产一区二区日韩精品| 一区二区免费看| 日韩精品一区二区三区中文不卡| 99久久精品国产观看| 日韩高清中文字幕一区| 国产精品久久久久影院色老大| 欧美日本韩国一区二区三区视频| 国产成人av网站| 亚洲成a人v欧美综合天堂| 久久久久成人黄色影片| 欧美色爱综合网| 成人蜜臀av电影| 欧美aaa在线| 亚洲一区二区三区自拍| 国产精品色哟哟| 日韩一区二区不卡| 欧美天堂亚洲电影院在线播放| 国产精品夜夜爽| 免费成人美女在线观看.| 夜夜精品视频一区二区| 中文字幕精品—区二区四季| 日韩一区二区三区免费看| 一本色道久久综合精品竹菊 | 99精品欧美一区| 久久99精品国产麻豆不卡| 亚洲国产另类精品专区| 国产精品你懂的| 国产性天天综合网| 日韩精品在线网站| 日韩一区二区在线看片| 欧美群妇大交群中文字幕| 91黄视频在线| 日本高清无吗v一区| 成人精品鲁一区一区二区| 狠狠色丁香九九婷婷综合五月| 日韩av网站免费在线| 亚洲成av人片一区二区三区| 尤物av一区二区| 亚洲男人天堂一区| 中文字幕亚洲精品在线观看| 中文字幕第一页久久| 久久久另类综合| 国产亚洲人成网站| 久久蜜桃一区二区| 久久精品亚洲国产奇米99| www久久精品| 久久精品欧美日韩精品| 国产午夜精品一区二区三区四区| 久久亚洲影视婷婷| 久久综合成人精品亚洲另类欧美 | 欧美性受xxxx| 欧美在线视频不卡| 欧美日韩一区二区三区高清| 欧美午夜影院一区| 欧美日韩成人综合在线一区二区| 欧美日韩亚洲综合一区二区三区| 欧美日韩视频在线观看一区二区三区| 欧美三级日韩三级国产三级| 欧美色图第一页| 91精品国产综合久久蜜臀| 日韩一级成人av| 精品国产亚洲在线| 欧美国产在线观看| 亚洲免费av观看| 图片区小说区区亚洲影院| 免费成人结看片| 国产激情91久久精品导航| fc2成人免费人成在线观看播放| 91亚洲精品久久久蜜桃| 欧美精品一卡二卡| 精品国产精品网麻豆系列| 国产欧美精品日韩区二区麻豆天美| 成人免费在线播放视频| 亚洲国产精品尤物yw在线观看| 日本不卡高清视频| 成人丝袜18视频在线观看| 色综合久久88色综合天天免费| 777亚洲妇女| 国产精品麻豆视频| 亚洲午夜国产一区99re久久| 麻豆免费精品视频| 99国产精品久| 5566中文字幕一区二区电影| 日本一区二区三区久久久久久久久不| 一区二区三区精品在线| 久久99日本精品| 色婷婷香蕉在线一区二区| 日韩精品最新网址| 亚洲精品国产一区二区三区四区在线| 日本不卡中文字幕| 91影视在线播放| xfplay精品久久| 性欧美大战久久久久久久久| 岛国一区二区三区| 91精品国产综合久久久久久| 国产精品视频一区二区三区不卡| 天堂精品中文字幕在线| 91亚洲永久精品| 久久中文字幕电影| 午夜欧美视频在线观看 | 香蕉成人伊视频在线观看| 国产乱码字幕精品高清av | 亚洲精品在线免费观看视频| 一区二区三区在线观看国产| 国产精品996| 6080午夜不卡| 一区二区三区四区视频精品免费 | 国产精品伦一区二区三级视频| 日韩成人一级大片| 在线视频你懂得一区二区三区| 久久亚洲综合色一区二区三区| 日日夜夜免费精品| 在线视频国产一区| 综合久久久久综合| 懂色av中文一区二区三区| 精品国产乱码久久久久久免费| 亚洲成人免费av| 91久久人澡人人添人人爽欧美| 国产精品久久久久久久久免费丝袜| 美国三级日本三级久久99| 欧美日韩成人综合在线一区二区| 亚洲人成亚洲人成在线观看图片| 国产成人自拍高清视频在线免费播放| 欧美一区二区日韩| 日本成人超碰在线观看| 欧美日韩的一区二区| 亚洲成人av资源| 欧美综合在线视频| 伊人色综合久久天天| 99re这里只有精品首页| 国产精品久久午夜| 成人网在线免费视频| 久久综合九色综合97婷婷女人| 久久国产精品99久久久久久老狼 | 成人免费黄色在线| 国产精品污网站| 成人av中文字幕| 国产精品久久久久久久久久免费看| 成人a区在线观看| 国产精品不卡在线观看| 99久久精品99国产精品| 亚洲免费观看高清在线观看| 一本一本大道香蕉久在线精品 | 亚洲v日本v欧美v久久精品| 欧洲另类一二三四区| 午夜精品视频在线观看| 欧美久久久久久久久中文字幕| 丝瓜av网站精品一区二区| 欧美一个色资源| 国产精品一二一区| 18欧美亚洲精品| 欧美午夜精品一区二区蜜桃 | 久久影院视频免费| 国产iv一区二区三区| 国产精品免费视频观看| 色婷婷av一区二区三区之一色屋| 亚洲一区二区三区国产| 欧美一区二区在线免费观看| 国模娜娜一区二区三区| 国产精品麻豆一区二区 | 欧美一级电影网站| 国产乱一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩国产成人在线免费| 美女任你摸久久| 中文字幕一区二区三中文字幕| 在线视频国内一区二区| 久草热8精品视频在线观看| 日本一区二区综合亚洲| 91成人看片片| 国产另类ts人妖一区二区| 亚洲欧洲无码一区二区三区| 欧美群妇大交群的观看方式|