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

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

?? god.cc

?? NS2網絡仿真軟件是目前最為流行的網絡仿真模擬軟件
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- * * Copyright (c) 1997 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the Computer Systems *	Engineering Group at Lawrence Berkeley Laboratory. * 4. Neither the name of the University nor of the Laboratory may be used *    to endorse or promote products derived from this software without *    specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Header: /cvsroot/nsnam/ns-2/mobile/god.cc,v 1.20 2006/12/27 14:57:23 tom_henderson Exp $ *//* Ported from CMU/Monarch's code, nov'98 -Padma.*//* * god.cc * * General Operations Director * * perform operations requiring omnipotence in the simulation * * NOTE: Tcl node indexs are 0 based, NS C++ node IP addresses (and the * node->index() are 1 based. * */#include <object.h>#include <packet.h>#include <ip.h>#include <god.h>//#include <sys/param.h>  /* for MIN/MAX */#include "diffusion/hash_table.h"#include "mobilenode.h"God* God::instance_;static class GodClass : public TclClass {public:        GodClass() : TclClass("God") {}        TclObject* create(int, const char*const*) {                return (new God);        }} class_God;God::God(){        min_hops = 0;        num_nodes = 0;        data_pkt_size = 64;	mb_node = 0;	next_hop = 0;	prev_time = -1.0;	num_alive_node = 0;	num_connect = 0;	num_recv = 0;	num_compute = 0;	num_data_types = 0;	source_table = 0;	sink_table = 0;	num_send = 0;	active = false;	allowTostop = false;}// Added by Chalermek 12/1/99int God::NextHop(int from, int to){  if (active == false) {    perror("God is off.\n");    exit(-1);  }  if (from >= num_nodes) {    perror("index from higher than the maximum number of nodes.\n");    return -1;  }  if (to >= num_nodes) {    perror("index to higher than the maximum number of nodes.\n");    return -1;  }  return NEXT_HOP(from,to);}void God::ComputeNextHop(){  if (active == false) {    return;  }  int from, to, neighbor;  for (from=0; from<num_nodes; from++) {    for (to=0; to<num_nodes; to++) {      NEXT_HOP(from,to) = UNREACHABLE;      if (from==to) {	NEXT_HOP(from,to) = from;     // next hop is itself.      }      if (MIN_HOPS(from, to) == UNREACHABLE) {	continue;      }      for (neighbor=0; neighbor<num_nodes; neighbor++){	if ( MIN_HOPS(from, neighbor) != 1) {	  continue;	}	if ( MIN_HOPS(from, to) == (MIN_HOPS(neighbor,to) +1) ) {	  NEXT_HOP(from, to) = neighbor;	  break;	}      }    }  }}void God::UpdateNodeStatus(){  int i,j;  int count, cur, sk, srcid, dt;   for (i=0; i<num_data_types; i++) {     for (j=0; j<num_nodes; j++) {       if (SRC_TAB(i,j) != NULL) {	 node_status[j].is_source_ = true;       }     }   }   for (i=0; i<num_data_types; i++) {     for (j=0; j<num_nodes; j++) {       if (SK_TAB(i,j) > 0) {	 node_status[j].is_sink_ = true;       }     }   }   for (dt=0; dt < num_data_types; dt++) {     for (srcid=0; srcid < num_nodes; srcid++) {       if (SRC_TAB(dt,srcid) == NULL) 	 continue;       for (sk = 0; sk < num_nodes; sk++) {	 if (SK_TAB(dt, sk) == 0)	   continue;	 cur = srcid;	 count = 0;	 node_status[cur].is_on_trees_ = true;	 while (cur != sk) {	   if (NextHop(cur, sk) == UNREACHABLE)	     break;	   assert(NextHop(cur,sk) >= 0 && NextHop(cur, sk) < num_nodes);	   cur = NextHop(cur, sk);      	   node_status[cur].is_on_trees_ = true;	   count ++;	   assert(count < num_nodes);	 }       }     }   }   Dump();   DumpNodeStatus();}void God::DumpNodeStatus(){  for (int i=0; i < num_nodes; i++) {    printf("Node %d status (sink %d, source %d, on_tree %d)\n", i, 	   node_status[i].is_sink_, node_status[i].is_source_, 	   node_status[i].is_on_trees_);  }}void God::DumpNumSend(){#ifdef DEBUG_OUTPUT  for (int i=0; i < num_data_types; i++) {    fprintf(stdout, "God: data type %d distinct events %d\n", i, num_send[i]);  }#endif}void God::Dump(){   int i, j, k, l;   // Dump min_hops array   fprintf(stdout,"Dump min_hops\n");   for(i = 0; i < num_nodes; i++) {      fprintf(stdout, "%2d) ", i);      for(j = 0; j < num_nodes; j++)          fprintf(stdout, "%2d ", min_hops[i * num_nodes + j]);          fprintf(stdout, "\n");  }   // How many times the god compute routes ?   fprintf(stdout, "God computes routes %d times.\n", num_compute);   // The following information can be found only when god is active.   if (active == false) {     return;   }   // Dump next_hop array   fprintf(stdout, "Dump next_hop\n");   for (i = 0; i < num_nodes; i++) {     for (j = 0; j < num_nodes; j++) {       fprintf(stdout,"NextHop(%d,%d):%d\n",i,j,NEXT_HOP(i,j));     }   }   // What is inside SRC_TAB ?   fprintf(stdout, "Dump SRC_TAB\n");   for (i=0; i<num_data_types; i++) {     fprintf(stdout,"%2d) ",i);     for (j=0; j<num_nodes; j++) {       fprintf(stdout,"%2d ", SRC_TAB(i,j) ? 1:0);     }     fprintf(stdout,"\n");   }   // What is inside OIF_MAP ?   int *oif_map;   fprintf(stdout, "Dump OIF_MAP\n");   for (i=0; i<num_data_types; i++) {     for (j=0; j<num_nodes; j++) {       if (SRC_TAB(i,j)!=NULL) {	 oif_map = SRC_TAB(i,j);	 fprintf(stdout,"(%2d,%2d)\n",i,j);	 for (k=0; k<num_nodes; k++) {	   for (l=0; l<num_nodes; l++) {	     fprintf(stdout,"%2d ", oif_map[k*num_nodes +l]);	   }	   fprintf(stdout,"\n");	 }       }     }   }   // What is inside SK_TAB ?   fprintf(stdout, "Dump SK_TAB\n");   for (i=0; i<num_data_types; i++) {     fprintf(stdout,"%2d) ",i);     for (j=0; j<num_nodes; j++) {       fprintf(stdout,"%2d ", SK_TAB(i,j));     }     fprintf(stdout,"\n");   }}void God::AddSink(int dt, int skid){  if (active == false) {    return;  }  assert(num_data_types > 0);  assert(num_nodes > 0);  assert(dt >= 0 && dt < num_data_types);  assert(skid >= 0 && skid < num_nodes);  if (SK_TAB(dt,skid) == 1)     return;  SK_TAB(dt,skid) = 1;  Fill_for_Source(dt, skid);}void God::AddSource(int dt, int srcid){  if (active == false) {    return;  }  assert(num_data_types > 0);  assert(num_nodes > 0);  assert(dt >= 0 && dt < num_data_types);  assert(srcid >= 0 && srcid < num_nodes);  if (SRC_TAB(dt,srcid) != 0)      return;  SRC_TAB(dt,srcid) = new int[num_nodes * num_nodes];  bzero((char*) SRC_TAB(dt, srcid), sizeof(int) * num_nodes * num_nodes);  Fill_for_Sink(dt, srcid);  //  Dump();}void God::Fill_for_Sink(int dt, int srcid){  int sk, cur, count;  int *oif_map = SRC_TAB(dt, srcid);  assert(oif_map != NULL);  for (sk = 0; sk < num_nodes; sk++) {    if (SK_TAB(dt, sk) == 0)      continue;    cur = srcid;    count = 0;    while (cur != sk) {      if (NextHop(cur, sk) == UNREACHABLE)	break;      assert(NextHop(cur,sk) >= 0 && NextHop(cur, sk) < num_nodes);      oif_map[cur*num_nodes + NextHop(cur, sk)] = 1;      cur = NextHop(cur, sk);            count ++;      assert(count < num_nodes);    }  }}void God::Fill_for_Source(int dt, int skid){  int src, cur, count;  int *oif_map;  for (src = 0; src < num_nodes; src++) {    if (SRC_TAB(dt, src) == 0)      continue;       oif_map = SRC_TAB(dt, src);    cur = src;    count = 0;    while (cur != skid) {      if (NextHop(cur, skid) == UNREACHABLE)	break;      assert(NextHop(cur,skid) >= 0 && NextHop(cur, skid) < num_nodes);      oif_map[cur*num_nodes + NextHop(cur, skid)] = 1;      cur = NextHop(cur, skid);            count ++;      assert(count < num_nodes);    }  }}void God::Rewrite_OIF_Map(){  for (int dt = 0; dt < num_data_types; dt++) {    for (int src = 0; src < num_nodes; src++) {      if (SRC_TAB(dt, src) == NULL)	continue;      memset(SRC_TAB(dt,src),'\x00', sizeof(int) * num_nodes * num_nodes);      Fill_for_Sink(dt, src);    }  }}int *God::NextOIFs(int dt, int srcid, int curid, int *ret_num_oif) {  if (active == false) {    perror("God is inactive.\n");    exit(-1);  }    int *oif_map = SRC_TAB(dt, srcid);  int count=0;  int i;  for (i=0; i<num_nodes; i++) {    if (oif_map[curid*num_nodes +i] == 1)      count++;  }  *ret_num_oif = count;  if (count == 0)    return NULL;  int *next_oifs = new int[count];  int j=0;    for (i=0; i<num_nodes; i++) {    if (oif_map[curid*num_nodes +i] == 1) {      next_oifs[j] = i;      j++;        }  }  return next_oifs;}bool God::IsReachable(int i, int j){//  if (MIN_HOPS(i,j) < UNREACHABLE && MIN_HOPS(i,j) >= 0)   if (NextHop(i,j) != UNREACHABLE)     return true;  else     return false;}bool God::IsNeighbor(int i, int j){  assert(i<num_nodes && j<num_nodes);  //printf("i=%d, j=%d\n", i,j);  if (mb_node[i]->energy_model()->node_on() == false ||      mb_node[j]->energy_model()->node_on() == false ||      mb_node[i]->energy_model()->energy() <= 0.0 ||      mb_node[j]->energy_model()->energy() <= 0.0 ) {    return false;  }  vector_ns a(mb_node[i]->X(), mb_node[i]->Y(), mb_node[i]->Z());  vector_ns b(mb_node[j]->X(), mb_node[j]->Y(), mb_node[j]->Z());  vector_ns d = a - b;  if (d.length() < RANGE)    return true;  else    return false;  }void God::CountConnect(){  int i,j;  num_connect = 0;  for (i=0; i<num_nodes; i++) {    for (j=i+1; j<num_nodes; j++) {      if (MIN_HOPS(i,j) != UNREACHABLE) {	num_connect++;      }    }  }}void God::CountAliveNode(){  int i;  num_alive_node = 0;  for (i=0; i<num_nodes; i++) {    if (mb_node[i]->energy_model()->energy() > 0.0) {      num_alive_node++;    }  }}bool God::ExistSource(){  int dtype, i;  for (dtype = 0; dtype < num_data_types; dtype++) {    for (i=0; i<num_nodes; i++) {      if (SRC_TAB(dtype, i) != 0)	return true;    }  }  return false;}bool God::ExistSink(){  int dtype, i;  for (dtype = 0; dtype < num_data_types; dtype++) {    for (i=0; i<num_nodes; i++) {      if (SK_TAB(dtype, i) != 0)	return true;    }  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜夜夜夜久久| 欧美日韩卡一卡二| 国产女人aaa级久久久级| 国产精品亚洲人在线观看| 久久精品夜色噜噜亚洲a∨| 国产成人精品亚洲午夜麻豆| 欧美韩日一区二区三区| 成人av网址在线| 亚洲欧美一区二区三区极速播放 | 日韩精品一区二区在线观看| 久久99国产精品久久99| 久久精品免费在线观看| 成人国产精品免费观看动漫| 一区二区在线观看免费| 欧美日本视频在线| 狠狠色狠狠色合久久伊人| 国产精品免费视频网站| 在线观看精品一区| 美腿丝袜亚洲色图| 国产精品国产三级国产普通话99 | 色婷婷久久久综合中文字幕| 亚洲国产精品久久不卡毛片| 精品日韩一区二区| av中文字幕亚洲| 婷婷亚洲久悠悠色悠在线播放| 日韩欧美中文一区二区| 成人av在线电影| 日韩黄色在线观看| 国产精品三级电影| 6080日韩午夜伦伦午夜伦| 国产精品一区二区久久不卡| 夜夜夜精品看看| 久久久精品日韩欧美| 欧美三级三级三级爽爽爽| 国产乱人伦偷精品视频不卡| 亚洲在线观看免费视频| 久久精品一区八戒影视| 欧美日韩www| bt欧美亚洲午夜电影天堂| 视频一区国产视频| 亚洲色图在线看| 久久综合色婷婷| 欧美日韩不卡在线| av日韩在线网站| 激情伊人五月天久久综合| 一区二区三区四区av| 国产欧美日韩另类视频免费观看| 欧美日韩免费电影| 99re成人精品视频| 国产成人在线视频网站| 美女任你摸久久| 亚洲成人激情社区| 日韩伦理电影网| 国产亚洲成av人在线观看导航| 91精品国产综合久久精品性色| 色诱视频网站一区| 成人蜜臀av电影| 国产精品99精品久久免费| 美女www一区二区| 五月婷婷欧美视频| 亚洲综合偷拍欧美一区色| 亚洲欧洲日本在线| 中文字幕 久热精品 视频在线| 日韩亚洲欧美一区| 91精品免费在线| 欧美日本国产视频| 欧美美女网站色| 精品视频1区2区| 在线观看www91| 欧洲一区在线观看| 日本韩国精品在线| 色一情一乱一乱一91av| 不卡在线视频中文字幕| 高清不卡在线观看| 国产大片一区二区| 国产成人av资源| 国产精品18久久久久久久网站| 激情综合色播激情啊| 国内精品久久久久影院一蜜桃| 九色|91porny| 国产精品资源在线| 国产大片一区二区| 成人精品视频一区| 91一区二区三区在线观看| 95精品视频在线| 色88888久久久久久影院按摩| 91美女视频网站| 色偷偷成人一区二区三区91| 色又黄又爽网站www久久| 在线精品国精品国产尤物884a | 欧美亚洲综合网| 欧美色涩在线第一页| 欧美伦理电影网| 精品1区2区在线观看| 国产午夜精品理论片a级大结局| 欧美国产禁国产网站cc| 一区在线中文字幕| 亚洲一区二区在线播放相泽| 亚洲成人黄色小说| 国产一区二区在线看| 成人激情av网| 欧美四级电影网| 日韩欧美中文一区| 中文字幕一区二区三区蜜月| 亚洲国产一区在线观看| 久久精品国产色蜜蜜麻豆| 高清国产午夜精品久久久久久| 色婷婷综合在线| 日韩欧美国产麻豆| **网站欧美大片在线观看| 香蕉成人伊视频在线观看| 国内精品伊人久久久久av一坑| 不卡视频在线看| 69av一区二区三区| 亚洲国产精品黑人久久久| 亚洲国产综合色| 国产91在线看| 欧美精品日韩综合在线| 国产日产欧产精品推荐色 | 一区二区三区四区精品在线视频| 天天影视涩香欲综合网| 国产精品1024久久| 欧美精品久久一区二区三区| 欧美国产丝袜视频| 首页综合国产亚洲丝袜| 国产一区二区在线电影| 91福利国产精品| 久久久电影一区二区三区| 亚洲成人资源网| 成人一区二区三区视频 | 免费成人你懂的| 91亚洲国产成人精品一区二三 | 亚洲欧美日韩国产手机在线| 免费亚洲电影在线| 色94色欧美sute亚洲线路一久| 精品国产成人在线影院| 亚洲国产精品久久久久婷婷884 | 亚洲同性gay激情无套| 麻豆国产精品视频| 在线观看不卡一区| 国产精品美女久久久久久久久久久 | 亚洲国产精品久久一线不卡| 成人性视频免费网站| 日韩免费观看2025年上映的电影| 一区二区三区在线免费观看| 成人午夜在线视频| 久久久蜜桃精品| 免费美女久久99| 欧美日本韩国一区二区三区视频| 亚洲女人的天堂| 97久久精品人人爽人人爽蜜臀| 国产三级精品视频| 国产在线精品不卡| 欧美www视频| 蜜臀久久99精品久久久久宅男| 欧美色视频在线| 婷婷丁香激情综合| 在线免费亚洲电影| 樱桃国产成人精品视频| 92国产精品观看| 日韩毛片视频在线看| 波多野结衣在线aⅴ中文字幕不卡| 久久久久久久久99精品| 国产一区高清在线| 久久久久久免费网| 国产精品白丝av| 中文字幕乱码亚洲精品一区| 成人污污视频在线观看| 国产视频视频一区| 不卡视频免费播放| 亚洲色图在线看| 91精品1区2区| 亚州成人在线电影| 日韩三级伦理片妻子的秘密按摩| 肉丝袜脚交视频一区二区| 欧美一区二区三区视频在线观看 | 亚洲婷婷综合久久一本伊一区 | 色素色在线综合| 亚洲一区二区三区在线看| 欧美三级欧美一级| 蜜芽一区二区三区| 久久―日本道色综合久久| 国产成人综合精品三级| 国产精品第13页| 欧美亚男人的天堂| 免费在线看成人av| 国产日产欧美一区| 91蝌蚪porny九色| 无码av中文一区二区三区桃花岛| 欧美一级在线免费| 国产成人av一区| 亚洲少妇中出一区| 91麻豆精品国产91久久久资源速度| 另类欧美日韩国产在线| 国产欧美精品日韩区二区麻豆天美| 99久免费精品视频在线观看 | 国产精品第13页| 欧美三级电影网站| 国产美女一区二区三区| 亚洲欧美激情在线|