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

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

?? netmodel.cc

?? NS2網絡仿真軟件是目前最為流行的網絡仿真模擬軟件
?? CC
?? 第 1 頁 / 共 5 頁
字號:
/* * Copyright (c) 1991,1993 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/nam-1/netmodel.cc,v 1.113 2006/11/19 00:12:29 tom_henderson Exp $ (LBL) */#include <stdlib.h>#ifdef WIN32#include <windows.h>#endif#include <stdio.h>#include <ctype.h>#include <math.h>#include <tcl.h>#include <tclcl.h>#include "config.h"#include "netview.h"#include "psview.h"#include "testview.h"#include "animation.h"#include "group.h"#include "tag.h"#include "queue.h"#include "drop.h"#include "packet.h"#include "edge.h"#include "lan.h"#include "node.h"#include "agent.h"#include "feature.h"#include "route.h"#include "netmodel.h"#include "monitor.h"#include "trace.h"#include "paint.h"#include "sincos.h"#include "state.h"#include "editview.h"#include "address.h"#include "animator.h"#include <float.h>extern int lineno;// not used//static int next_pat;class NetworkModelClass : public TclClass {public:	NetworkModelClass() : TclClass("NetworkModel") {}	TclObject* create(int argc, const char*const* argv) {		if (argc < 5) 			return 0;		return (new NetModel(argv[4]));	}} networkmodel_class;//----------------------------------------------------------------------//----------------------------------------------------------------------NetModel::NetModel(const char *animator) :	TraceHandler(animator),	drawables_(0),	animations_(0),	queues_(0),	views_(0),	nodes_(0),	lans_(0), 	node_sizefac_(NODE_EDGE_RATIO),	mon_count_(0),	monitors_(NULL),	wireless_(0),	resetf_(0),	selectedSrc_(-1),	selectedDst_(-1),	selectedFid_(-1),	hideSrc_(-1),	hideDst_(-1),	hideFid_(-1),	colorSrc_(-1),	colorDst_(-1),	colorFid_(-1),	showData_(1), 	showRouting_(1),	showMac_(1),	selectedColor_(-1),	nGroup_(0), 	nTag_(0),	parsetable_(&traceevent_) {	int i;	for (i = 0; i < EDGE_HASH_SIZE; ++i) {		hashtab_[i] = 0;	}	for (i = 0; i < PTYPELEN; ++i) {		selectedTraffic_[i] = '\0' ;		colorTraffic_[i] = '\0' ;		hideTraffic_[i] = '\0' ;	}	// Default node size is 10.0 so a default packet will be 25% of that (2.5)	// This value is modified whenever a node is added.  It will be based on 	// the running average of the size of the last 5 nodes.  Look at 	// NetModel::addNode(const TraceEvent &e) for more details	packet_size_ = 2.5;  	/*XXX*/	nymin_ = 1e6;	nymax_ = -1e6;	Paint *paint = Paint::instance();	int p = paint->thin();	// Initially 256 colors. Can be extended later.	// See handling of otcl binding "color"	nclass_ = 256;	paintMask_ = 0xff;	paint_ = new int[nclass_];	oldpaint_ = new int[nclass_];	for (i = 0; i < nclass_; ++i) {		paint_[i] = p;		oldpaint_[i] = p;  }	addrHash_ = new Tcl_HashTable;	Tcl_InitHashTable(addrHash_, TCL_ONE_WORD_KEYS);	grpHash_ = new Tcl_HashTable;	Tcl_InitHashTable(grpHash_, TCL_ONE_WORD_KEYS);	tagHash_ = new Tcl_HashTable;	Tcl_InitHashTable(tagHash_, TCL_STRING_KEYS);	objnameHash_ = new Tcl_HashTable;	Tcl_InitHashTable(objnameHash_, TCL_STRING_KEYS);	registerObjName("ALL", ClassAllID);	registerObjName("ANIMATION", ClassAnimationID);	registerObjName("NODE", ClassNodeID);	registerObjName("PACKET", ClassPacketID);	registerObjName("EDGE", ClassEdgeID);	registerObjName("QUEUEITEM", ClassQueueItemID);	registerObjName("LAN", ClassLanID);	registerObjName("TAG", ClassTagID);	registerObjName("AGENT", ClassAgentID);	bind("bcast_duration_", &bcast_duration_);	bind("bcast_radius_", &bcast_radius_);}NetModel::~NetModel(){	// We should delete everything here, if we want deletable netmodel...	delete paint_;	Animation *a, *n;	for (a = animations_; a != 0; a = n) {		n = a->next();		delete a;	}	for (a = drawables_; a != 0; a = n) {		n = a->next();		delete a;	}	Tcl_DeleteHashTable(grpHash_);	delete grpHash_;	Tcl_DeleteHashTable(tagHash_);	delete tagHash_;	Tcl_DeleteHashTable(objnameHash_);	delete objnameHash_;}void NetModel::update(double now){	Animation *a, *n;	for (a = animations_; a != 0; a = n) {		n = a->next();		a->update(now);	}	/*	 * Draw all animations and drawables on display to reflect	 * current time.	 */	now_ = now;	for (View* p = views_; p != 0; p = p->next_) {		//  Calls View::draw() which calls NetView::render()		//  which calls NetModel::render(View*)		p->draw();	}}void NetModel::update(double now, Animation* a) {	a->update(now);	for (View* p = views_; p != 0; p = p->next_)		a->draw(p, now);}//----------------------------------------------------------------------// void// NetModel::reset(double now)//   - Reset all animations and queues to time 'now'.//----------------------------------------------------------------------voidNetModel::reset(double now) {	Animation* a;	for (a = animations_; a != 0; a = a->next())		a->reset(now);	for (a = drawables_; a != 0; a = a->next())		a->reset(now);	for (Queue* q = queues_; q != 0; q = q->next_)		q->reset(now);}//----------------------------------------------------------------------// void// NetModel::render(View * view)//   - Draw this NetModel's drawables, animations, and monitors.//     (tags, nodes, edges, packets, queues, etc.)//----------------------------------------------------------------------voidNetModel::render(View* view) {	Animation *a;	Monitor *m;	for (a = drawables_; a != 0; a = a->next()) 	  a->draw(view, now_);	for (a = animations_; a != 0; a = a->next())	  a->draw(view, now_);	for ( m = monitors_; m != NULL; m = m->next())	  m->draw_monitor(view, nymin_, nymax_);}void NetModel::render(PSView* view) {	Animation *a;	for (a = drawables_; a != 0; a = a->next())	  a->draw(view, now_);	for (a = animations_; a != 0; a = a->next())	  a->draw(view, now_);}void NetModel::render(TestView* view) {	Animation *a;	for (a = drawables_; a != 0; a = a->next())	  a->draw(view, now_);	for (a = animations_; a != 0; a = a->next())	  a->draw(view, now_);}//----------------------------------------------------------------------// NetModel::EdgeHashNode *// NetModel::lookupEdgeHashNode(int src, int dst) const//   - Return a pointer to the edge between 'src' and 'dst'. //----------------------------------------------------------------------NetModel::EdgeHashNode *NetModel::lookupEdgeHashNode(int source, int destination) const{	EdgeHashNode* h;	for (h = hashtab_[ehash(source, destination)]; h != 0; h = h->next)		if (h->src == source && h->dst == destination)			break;	return (h);}int NetModel::addAddress(int id, int addr) const{	int newEntry = 1;	Tcl_HashEntry *he = 		Tcl_CreateHashEntry(addrHash_, (const char *)addr, &newEntry);	if (he == NULL)		return -1;	if (newEntry) {		Tcl_SetHashValue(he, (ClientData)id);	}	return 0;}int NetModel::addr2id(int addr) const {	Tcl_HashEntry *he = Tcl_FindHashEntry(addrHash_, (const char *)addr);	if (he == NULL)		return -1;	return *(int*)Tcl_GetHashValue(he);}//----------------------------------------------------------------------//  Adds an edge to a hash table?//----------------------------------------------------------------------void NetModel::enterEdge(Edge* e) {	int src = e->src();	int dst = e->dst();	EdgeHashNode *h = lookupEdgeHashNode(src, dst);	if (h != 0) {		/* XXX */		fprintf(stderr, "nam: duplicate edge (%d,%d)\n", src, dst);		//exit(1);		return;	}	h = new EdgeHashNode;	h->src = src;	h->dst = dst;	h->queue = 0;	h->edge = e;	int k = ehash(src, dst);	h->next = hashtab_[k];	hashtab_[k] = h;}//----------------------------------------------------------------------// void// NetModel::removeEdge(Edge* e)//   - Remove an edge from the network model and delete it//----------------------------------------------------------------------voidNetModel::removeEdge(Edge* e) {  int k;  int src = e->src();  int dst = e->dst();  EdgeHashNode * h = lookupEdgeHashNode(src, dst);  EdgeHashNode * f, * g;    if (h == 0) {    fprintf(stderr, "nam: trying to delete nonesisting edge (%d,%d)\n", src, dst);    exit(1);  }  //XXX do we need to process queue ? leave it to the future 10/01/98  k = ehash(src, dst);  for (f = hashtab_[k]; f != 0; f = f->next) {    if (h->src == f->src && h->dst == f->dst) {      if (f == hashtab_[k]) {        hashtab_[k] = f->next;        break;      } else {        g->next = f->next;              break;      }     }    g = f;  }      delete h;}//----------------------------------------------------------------------// void // NetModel::BoundingBox(BBox& bb) {// XXX Make this cheaper (i.e. cache it)//----------------------------------------------------------------------void NetModel::BoundingBox(BBox& bb) {	/* ANSI C limits, from float.h */	bb.xmin = bb.ymin = FLT_MAX;	bb.xmax = bb.ymax = -FLT_MAX;	for (Animation* a = drawables_; a != 0; a = a->next()) 		a->merge(bb);}/* Animation* NetModel::inside(double now, float px, float py) const { 	for (Animation* a = animations_; a != 0; a = a->next()) 		if (a->inside(now, px, py)) 			return (a); 	for (Animation* d = drawables_; d != 0; d = d->next()) 		if (d->inside(now, px, py)) 			return (d); 	return (0); }*/// Used exclusively for start_info() in nam.tcl. It ignores all tag objects// and therefore should *not* be used for editing.Animation* NetModel::inside(float px, float py) const{	for (Animation* a = animations_; a != 0; a = a->next()) {	     if (a->type() == BPACKET) {	        BPacket* b = (BPacket* ) a ;		if ((b->inside(px, py)) && (a->classid() != ClassTagID))			return (a);	     } 	     else  {		if ((a->inside(px, py)) && (a->classid() != ClassTagID))			return (a);	     }	}	for (Animation* d = drawables_; d != 0; d = d->next()) {		if ((d->inside(px, py) && (d->classid() != ClassTagID)))			return (d);	}	return (0);}int NetModel::add_monitor(Animation *a){  Monitor *m = new Monitor(mon_count_, a, node_size_);  m->next(monitors_);  monitors_=m;  return mon_count_++;}int NetModel::monitor(double now, int monitor, char *result, int len){  /*XXX should get rid of this search*/  for(Monitor *m=monitors_; m!=NULL; m=m->next()) {    if (m->monitor_number()==monitor) {      m->update(now, result, len);      if (strlen(result)==0)	delete_monitor(m);      return 0;    }  }  result[0]='\0';  return -1;}//----------------------------------------------------------------------// void NetModel::check_monitors(Animation *a)//   - A new animation just got created.  Check to see if we should //     already have a monitor on it.//----------------------------------------------------------------------void NetModel::check_monitors(Animation *a) {	MonState * ms;	Monitor * m;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩电影在线播放| 精品国产欧美一区二区| 91精品国产色综合久久| 国产亚洲女人久久久久毛片| 一区二区三区精品在线观看| 国产大陆亚洲精品国产| 欧美午夜精品久久久| 精品日韩99亚洲| 一区二区三区高清在线| 成人午夜激情片| 精品久久久久一区二区国产| 午夜日韩在线电影| 91麻豆精品视频| 中文字幕av一区二区三区高 | 国产专区综合网| 欧美日韩中字一区| 综合色天天鬼久久鬼色| 欧美精品自拍偷拍| 亚洲欧美激情一区二区| 成人美女在线视频| 久久久一区二区三区| 奇米色777欧美一区二区| 欧美日韩免费一区二区三区 | 国产91色综合久久免费分享| 884aa四虎影成人精品一区| 中文欧美字幕免费| 日本三级韩国三级欧美三级| av中文字幕不卡| 精品国产一区二区三区四区四 | 日韩视频免费直播| 亚洲精品乱码久久久久久久久 | 亚洲午夜日本在线观看| 国产福利91精品一区二区三区| 欧美成人一级视频| 一区二区三区日本| 韩国av一区二区三区四区| 欧美亚洲一区二区三区四区| 国产精品国产三级国产三级人妇 | 麻豆国产精品官网| 在线成人av影院| 亚洲国产欧美日韩另类综合| 91一区二区在线| 国产精品久久夜| 国产99久久久国产精品免费看 | 亚洲精品菠萝久久久久久久| 久久69国产一区二区蜜臀| 欧美日韩精品综合在线| 亚洲天堂成人在线观看| 色老头久久综合| 一区二区视频免费在线观看| jizzjizzjizz欧美| 亚洲欧洲精品成人久久奇米网| 丰满亚洲少妇av| 国产精品高潮呻吟| 99这里只有久久精品视频| 国产精品区一区二区三区 | 亚洲高清免费视频| 欧美日韩免费电影| 天天色图综合网| 91精品国产全国免费观看| 日本va欧美va精品发布| 日韩一区二区高清| 精品中文字幕一区二区小辣椒| 精品日韩欧美在线| 成人午夜在线播放| 亚洲三级在线看| 欧美日韩一区在线| 欧美aa在线视频| 久久久99免费| 不卡一卡二卡三乱码免费网站 | 91麻豆福利精品推荐| 亚洲国产欧美在线| 欧美精品乱码久久久久久按摩| 免费观看成人av| 国产精品系列在线| 成人黄页在线观看| 一级中文字幕一区二区| 欧美日韩一二三区| 国产福利一区在线| 亚洲欧美一区二区久久| 6080日韩午夜伦伦午夜伦| 国产一区视频网站| 中文字幕亚洲欧美在线不卡| 在线免费观看日韩欧美| 美国毛片一区二区三区| 中文字幕精品一区| 国产精品成人一区二区三区夜夜夜| 在线看日本不卡| 免费观看在线色综合| 国产精品理论片| 91精品在线观看入口| 成人综合日日夜夜| 日韩激情中文字幕| 日韩精品中午字幕| 91视视频在线直接观看在线看网页在线看 | 亚洲综合成人在线视频| 日韩一区二区三区视频| 91美女在线视频| 日本不卡一区二区| 亚洲三级免费观看| 欧美mv日韩mv亚洲| 91福利视频网站| 国产精一品亚洲二区在线视频| 一区二区三区在线高清| 亚洲精品一区二区三区在线观看 | 免费看欧美女人艹b| 亚洲欧美日韩在线播放| 久久伊99综合婷婷久久伊| 欧美三级日本三级少妇99| 高清在线不卡av| 免费在线观看一区二区三区| 亚洲免费成人av| 中文文精品字幕一区二区| 91精品国产综合久久福利软件| 99久久国产综合精品女不卡| 久久精品国内一区二区三区| 亚洲夂夂婷婷色拍ww47| 中文字幕一区二区三区蜜月 | 91福利视频网站| 国产成人综合自拍| 国产乱色国产精品免费视频| 日本不卡在线视频| 天天综合色天天综合色h| 一区二区欧美国产| 亚洲免费视频中文字幕| 欧美经典三级视频一区二区三区| 欧美大度的电影原声| 欧美男男青年gay1069videost| 日本精品一级二级| 91麻豆免费看| 色婷婷久久久久swag精品| 白白色亚洲国产精品| 国产成人综合在线观看| 国产精品资源在线看| 激情综合色播五月| 九一久久久久久| 国产美女视频一区| 国产xxx精品视频大全| 国产在线播放一区三区四| 日韩av一区二区在线影视| 香蕉久久一区二区不卡无毒影院| 国产精品国产成人国产三级| 中文字幕永久在线不卡| 136国产福利精品导航| 国产乱淫av一区二区三区| 激情久久久久久久久久久久久久久久| 久久国产精品99精品国产| 久久精品国产网站| 国产精品一二三区在线| 成人三级在线视频| 99精品欧美一区二区三区小说| 91在线精品一区二区三区| 在线观看三级视频欧美| 欧美日韩一级片网站| 日韩欧美在线网站| 久久久www免费人成精品| 国产精品毛片久久久久久| 亚洲狼人国产精品| 视频在线在亚洲| 国产精品一二三四区| 成人精品视频一区二区三区尤物| 91天堂素人约啪| 91麻豆精品国产91久久久资源速度| 日韩精品一区二区三区蜜臀| 日本一区二区久久| 国产精品欧美一区喷水| 亚洲精品国产品国语在线app| 久久成人免费电影| 不卡的电影网站| 欧美日韩免费高清一区色橹橹 | 精品国产免费人成电影在线观看四季 | 91国产免费观看| 日韩免费高清电影| 亚洲视频电影在线| 美洲天堂一区二卡三卡四卡视频| 国产九九视频一区二区三区| 在线亚洲一区观看| 久久美女高清视频| 亚洲丰满少妇videoshd| 国产黄色精品网站| 欧美日韩国产一区二区三区地区| 久久综合色天天久久综合图片| 亚洲精品成人精品456| 精品写真视频在线观看| 色婷婷综合五月| 久久五月婷婷丁香社区| 国产精品剧情在线亚洲| 图片区小说区区亚洲影院| 91在线观看高清| 欧美大片国产精品| 亚洲电影在线播放| 99久久免费视频.com| 久久久影视传媒| 七七婷婷婷婷精品国产| 欧洲在线/亚洲| 国产精品美女久久久久高潮| 久久99国内精品| 69堂国产成人免费视频| 亚洲一区欧美一区| 成人综合婷婷国产精品久久免费|