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

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

?? vis_update.c

?? 基于DHT的對等協議
?? C
字號:
#include <gtk/gtk.h>#include <gdk/gdk.h>#include <chord.h>#include <dns.h>#include <gtk/gtk.h>#include "id_utils.h"#include "vis.h"GtkWidget *total_nodes (NULL);short interval (1000);vec<chordID> get_queue;ihash<chordID, f_node, &f_node::ID, &f_node::link, hashID> nodes;extern bool accordion;// f_node functionsf_node::f_node (const chord_node &n) :  ID (n.x), host (n.r.hostname), hostname(""), port (n.r.port),  vnode_num (n.vnode_num),  fingers (NULL), predecessor (NULL), successors (NULL),  selected (true), highlight (false){  draw = check_get_state ();  for (u_int i = 0; i < n.coords.size (); i++)    coords.push_back (n.coords[i]);  dnslookup ();}f_node::f_node (chordID i, str h, unsigned short p) :    ID (i), host (h), port (p), vnode_num (0),    fingers (NULL), predecessor (NULL), successors (NULL),    selected (true), highlight (false){   draw = check_get_state ();  dnslookup ();};voidf_node::dnslookup (void){  struct in_addr ar;  inet_aton (host, &ar);  dns_hostbyaddr (ar, wrap (this, &f_node::dnslookup_cb));  hostname = host;}  voidf_node::dnslookup_cb (ptr<hostent> he, int err) {  if (err)    warn << "dns lookup error\n";  else    hostname = he->h_name;}f_node::~f_node () {   if (fingers) delete fingers;  if (predecessor) delete predecessor;  if (successors) delete successors;}f_node *add_node (const chord_node &n){  f_node *nu = nodes[n.x];  if (!nu) {    warn << "added " << n << "\n";    nu = New f_node (n);    nodes.insert (nu);    char nodess[1024];    sprintf (nodess, "%zd nodes", nodes.size ());    gtk_label_set_text (GTK_LABEL (total_nodes), nodess);  }  get_queue.push_back (n.x);  return nu;}f_node *add_node (str host, unsigned short port){  chord_node n;  n.x = make_chordID (host, port);  n.r.hostname = host;  n.r.port = port;  n.vnode_num = 0; // Only for initial node.  n.coords.clear ();  f_node *nu = add_node (n);  return nu;}voidget_cb (chordID next) {  draw_ring ();  if (get_queue.size ()) {    chordID n = get_queue.pop_front ();    f_node *nu = nodes[n];    if (nu)      update (nu);  } else {    f_node *node_next = nodes[next];    if (node_next == NULL)      node_next = nodes.first ();    if (node_next) {      update (node_next);      node_next = nodes.next (node_next);      if (node_next == NULL) 	node_next = nodes.first ();      next = node_next->ID;    } // else no nodes, keep calling get_cb until there are some  }  delaycb (0, 1000*1000*interval, wrap (&get_cb, next));}// ----------------------voidupdate (f_node *n){  update_fingers (n);  update_pred (n);  update_succlist (n);}voidupdate () {  if (simulated_input) return;  f_node *n = nodes.first ();  while (n) {    update (n);    n = nodes.next (n);  }  }voidupdate_highlighted (){  if (simulated_input) return;  f_node *n = nodes.first ();  while (n) {    if (n->highlight)      update (n);    n = nodes.next (n);  }}//----- update successors -----------------------------------------------------voidupdate_succlist (f_node *nu){  chordID n = nu->ID;  chord_nodelistextres *res = New chord_nodelistextres ();  doRPC (nu, chord_program_1, CHORDPROC_GETSUCC_EXT, &n, res,	 wrap (&update_succ_got_succ, 	       nu->ID, nu->host, nu->port, res));}voidupdate_succ_got_succ (chordID ID, str host, unsigned short port, 		      chord_nodelistextres *res, clnt_stat err){  if (err || res->status != CHORD_OK) {    delete res;    return;  }  f_node *nu = nodes[ID]; // callback shouldn't be called if not in list.  if (nu->successors) delete nu->successors;  nu->successors = res;    for (unsigned int i=0; i < res->resok->nlist.size (); i++) {    chord_node n = make_chord_node (res->resok->nlist[i].n);    if (nodes[n.x] == NULL)       add_node (n);  }}//----- update predecessor -------------------------------------------------voidupdate_pred (f_node *nu){  chordID n = nu->ID;  chord_nodelistextres *res = New chord_nodelistextres ();  doRPC (nu, chord_program_1, CHORDPROC_GETPRED_EXT, &n, res,	 wrap (&update_pred_got_pred,	       nu->ID, nu->host, nu->port, res));}voidupdate_pred_got_pred (chordID ID, str host, unsigned short port, 		      chord_nodelistextres *res, clnt_stat err){  if (err || res->status != CHORD_OK) {    delete res;    return;  }  f_node *nu = nodes[ID];  if (nu->predecessor) delete nu->predecessor;  nu->predecessor = res;  if (res->resok->nlist.size()) {    chord_node n = make_chord_node (res->resok->nlist[0].n);    if (nodes[n.x] == NULL)       add_node (n);  }}//----- update fingers -----------------------------------------------------voidupdate_fingers (f_node *nu){  chordID n = nu->ID;  chord_nodelistextres *res = New chord_nodelistextres ();  if (accordion)     doRPC (nu, accordion_program_1, ACCORDIONPROC_GETFINGERS_EXT, &n, res,	 wrap (&update_fingers_got_fingers, 	       nu->ID, nu->host, nu->port, res));   else     doRPC (nu, fingers_program_1, FINGERSPROC_GETFINGERS_EXT, &n, res,	 wrap (&update_fingers_got_fingers, 	       nu->ID, nu->host, nu->port, res));}voidupdate_fingers_got_fingers (chordID ID, str host, unsigned short port, 			    chord_nodelistextres *res, clnt_stat err){  if (err || res->status != CHORD_OK) {    delete res;    return;  }  f_node *nu = nodes[ID];  if (nu->fingers) delete nu->fingers;  nu->fingers = res;  for (unsigned int i=0; i < res->resok->nlist.size (); i++) {    chord_node n = make_chord_node (res->resok->nlist[i].n);    if (nodes[n.x] == NULL)       add_node (n);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产无人区一区二区三区| 一级日本不卡的影视| 久色婷婷小香蕉久久| 欧美午夜不卡视频| 一区二区三区不卡视频在线观看 | 亚洲精品成人天堂一二三| 国产91富婆露脸刺激对白| 久久久久久久久久久久久久久99| 精品一区二区三区欧美| 精品国产乱码久久久久久浪潮| 麻豆精品视频在线观看视频| 日韩一区国产二区欧美三区| 看电视剧不卡顿的网站| 26uuu精品一区二区| 国产精品一区二区三区网站| 久久久亚洲综合| 国产成人啪午夜精品网站男同| 2024国产精品视频| 高清日韩电视剧大全免费| 国产欧美日韩在线观看| 不卡一卡二卡三乱码免费网站| 国产精品嫩草影院com| a亚洲天堂av| 亚洲精品国产视频| 欧美日韩在线播放一区| 日本欧美一区二区在线观看| 精品福利一区二区三区| 国产精品综合二区| ...av二区三区久久精品| 色哟哟国产精品免费观看| 亚洲国产毛片aaaaa无费看| 欧美日韩夫妻久久| 老司机午夜精品99久久| 久久九九影视网| av不卡一区二区三区| 亚洲一线二线三线久久久| 欧美精品第一页| 激情欧美一区二区三区在线观看| 亚洲国产精品黑人久久久| 色综合久久天天| 日韩精品电影在线| 久久亚洲一级片| 一本久久综合亚洲鲁鲁五月天| 亚洲va天堂va国产va久| 精品国产伦理网| 91美女视频网站| 视频一区二区三区中文字幕| 精品国产乱码久久久久久浪潮| 成人av资源网站| 午夜久久福利影院| 久久精品这里都是精品| 色噜噜夜夜夜综合网| 免费成人深夜小野草| 国产精品伦理一区二区| 欧美美女直播网站| 风流少妇一区二区| 亚洲综合色丁香婷婷六月图片| 日韩视频123| 99综合电影在线视频| 日韩国产精品久久久久久亚洲| 国产婷婷色一区二区三区在线| 91搞黄在线观看| 国产精品亚洲综合一区在线观看| 一二三四社区欧美黄| 久久夜色精品一区| 欧美在线|欧美| 经典三级视频一区| 一区二区三区四区视频精品免费| 精品日韩99亚洲| 欧洲日韩一区二区三区| 韩国三级电影一区二区| 亚洲综合在线视频| 国产日韩欧美精品电影三级在线| 欧美在线视频全部完| 国产一区二区三区精品欧美日韩一区二区三区 | 久久国产日韩欧美精品| 中文字幕欧美一区| 日韩一区二区高清| 91免费看片在线观看| 国内精品在线播放| 香蕉久久一区二区不卡无毒影院| 中文字幕第一页久久| 欧美一区二区免费视频| 99久久精品免费观看| 精品一区二区综合| 亚洲一区二区视频在线| 亚洲国产精品高清| 亚洲精品在线免费播放| 欧美日韩在线综合| 91影视在线播放| 国产精品99久久久久| 日韩中文字幕一区二区三区| 亚洲图片你懂的| 国产婷婷色一区二区三区四区| 3751色影院一区二区三区| 91原创在线视频| 成人性生交大片免费看中文 | 欧美日韩另类一区| 成人av在线观| 老司机精品视频导航| 亚洲成人7777| 伊人夜夜躁av伊人久久| 中文无字幕一区二区三区| 精品国产一区二区三区四区四| 欧美日韩国产在线播放网站| 一本大道久久a久久精品综合| 成人精品视频一区二区三区尤物| 精品无码三级在线观看视频| 蜜桃视频第一区免费观看| 午夜精品一区二区三区三上悠亚 | 亚洲男人的天堂在线aⅴ视频| 国产亚洲成av人在线观看导航| 欧美一级一级性生活免费录像| 欧美日韩一级大片网址| 色哟哟国产精品| 在线亚洲高清视频| 色综合久久久久久久| eeuss国产一区二区三区| 成人伦理片在线| 国产成人精品影院| 国产精品18久久久久久久久| 精东粉嫩av免费一区二区三区| 美女久久久精品| 免费xxxx性欧美18vr| 人人精品人人爱| 日本成人在线视频网站| 天天操天天色综合| 日韩在线观看一区二区| 偷拍一区二区三区| 日本va欧美va精品| 韩国欧美国产1区| 国产传媒一区在线| 成人激情小说网站| 99视频精品在线| 色综合久久中文字幕| 欧美中文字幕一二三区视频| 欧美日精品一区视频| 欧美日韩三级视频| 91精品黄色片免费大全| 欧美一区二区视频网站| 欧美v日韩v国产v| 国产欧美视频一区二区| 亚洲欧洲99久久| 亚洲精品免费一二三区| 亚洲一区二区三区免费视频| 五月综合激情日本mⅴ| 老色鬼精品视频在线观看播放| 精品在线一区二区三区| 国产91清纯白嫩初高中在线观看 | 欧美高清性hdvideosex| 日韩欧美一级二级| 国产农村妇女精品| 亚洲九九爱视频| 日韩高清一区二区| 国内精品写真在线观看| 成人午夜视频网站| 一本一道波多野结衣一区二区| 欧美精品在线观看一区二区| 日韩欧美中文字幕制服| 国产欧美日韩在线| 亚洲精品成人a在线观看| 婷婷夜色潮精品综合在线| 久久99精品国产麻豆不卡| 国产91精品一区二区麻豆网站| 91美女片黄在线观看| 欧美精品丝袜久久久中文字幕| 精品日产卡一卡二卡麻豆| 中文欧美字幕免费| 亚洲国产日韩av| 国产一区二区三区日韩| 色中色一区二区| 日韩一级黄色大片| 日本一区二区三区在线观看| 亚洲免费观看视频| 老司机精品视频导航| 99re热这里只有精品视频| 欧美日韩国产系列| 久久久精品2019中文字幕之3| 亚洲人成伊人成综合网小说| 免费一区二区视频| 99久久精品国产导航| 69av一区二区三区| 国产精品免费aⅴ片在线观看| 性欧美疯狂xxxxbbbb| 粉嫩久久99精品久久久久久夜| 欧美日韩欧美一区二区| 久久久久国产一区二区三区四区| 亚洲激情欧美激情| 国产在线播放一区三区四| 欧美丝袜丝交足nylons图片| 久久免费美女视频| 亚洲成人你懂的| 成人h精品动漫一区二区三区| 欧美精品v国产精品v日韩精品 | 99国产欧美另类久久久精品| 日韩小视频在线观看专区| 亚洲天堂福利av| 老司机精品视频导航| 欧美在线一二三| 国产精品色一区二区三区|