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

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

?? shiva.h

?? clustering for ns-2 simulation
?? H
字號:
/** * Copyright (c) 2006 Michele Mastrogiovanni. * *   Licensed under the Apache License, Version 2.0 (the "License"); *   you may not use this file except in compliance with the License. *   You may obtain a copy of the License at * *       http://www.apache.org/licenses/LICENSE-2.0 * *   Unless required by applicable law or agreed to in writing, software *   distributed under the License is distributed on an "AS IS" BASIS, *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *   See the License for the specific language governing permissions and *   limitations under the License. * */ #ifndef _SHIVA_H_#define _SHIVA_H_#include "ClusteringModule.h"#include "CyclesFinder.h"#include "ShivaUtility.h"// #include "BackboneUtility.h"// #include "dca_mastro.h"// #include "connector_mastro.h"#include <fstream>#include <sstream>#include <string>#include <iostream>#include <map>////////////////// Definition //////////////////#define CLUSTER_HEAD		0#define NORMAL				1#define GATEWAY				2//////////////////////// Stato del nodo ///////////////////////typedef enum {	SHIVA_STATUS_DISCOVER   = 0x0,	// Discover dei vicini BLACK a distanza minore uguale a MAX_LENGTH									// e creazione del grafo virtual di grado massimo MAX_LENGTH.	SHIVA_STATUS_CONNECTING = 0x1,  // Colorazione dei nodi di connessione del backbone dopo									// l'eliminazione dei cicli.	SHIVA_STATUS_END		= 0x2   // Fine algoritmo.	} ShivaStatus;//////////////////////// Tipi di messaggi ////////////////////////typedef enum{	SHIVA_DISCOVER		 = 0x0,			// Scopre i nodi BLACK vicini, i percorsi e i cicli.	SHIVA_TURN_ON		 = 0x1,			// Rende BLACK un nodo WHITE sul backbone.	SHIVA_TURN_OFF		 = 0x2,			// Rende BLACK un nodo WHITE sul backbone.	SHIVA_CONFIRM		 = 0x3,			// Messaggio DISCOVER finale.	SHIVA_DATA			 = 0x4			// DATA message.} ShivaMessageType;//// Struttura del messaggio di discovery.//struct DiscoveryMessage {	int my_seq;							// Numero di sequenza del messaggio										//	int ack_seq;						// Numero di sequenza del pacchetto che ha scatenato la										// trasmissione (serve per conferma).	NodeAddress parent;					// Nodo che ha scatenato la trasmissione.										//	Path path1;                         // Percorso di nodi BLACK: contiene i nodi BLACK presenti										// dal primo (in testa) all'ultimo	Path path2;                         // Percorso di nodi WHITE dal vicino dell'ultimo nodo 										// BLACK al nodo WHITE precedente.	bool dummy;							// True se il messaggio e'di tipo DUMMY (e quindi i 										// path sono vuoti).};//////////////////////////// Header del pacchetto ////////////////////////////struct hdr_shiva {	ShivaMessageType msg_type;		// Tipo di messaggio.		struct DiscoveryMessage discovery_message;	ShivaMessageType confirm;	/////////////////	/// Addressing //	/////////////////	static int offset_;	inline static int& offset() { return offset_; }	inline static hdr_shiva* access(const Packet* p) {		return (hdr_shiva*) p->access(offset_);	}};struct ShivaArc {	int length;	NodeAddress begin;	NodeAddress end;};bool isBetterThan(ShivaArc arc1, ShivaArc arc2) {	if (arc1.length > arc2.length)		return true;	if (arc1.length < arc2.length)		return false;	int max1 = (arc1.begin > arc1.end ? arc1.begin : arc1.end);	int max2 = (arc2.begin > arc2.end ? arc2.begin : arc2.end);	int other_max1 = (arc1.begin > arc1.end ? arc1.end : arc1.begin);	int other_max2 = (arc2.begin > arc2.end ? arc2.end : arc2.begin);		if (max1 < max2)		return true;			if (max1 > max2)		return false;			return other_max1 < other_max2;}///////////// Timer /////////////class ShivaTimer;///////////// Agent /////////////class SHIVA_Agent : public ClusteringModule{public:	SHIVA_Agent();		// Parsing dei comandi TCL.	// virtual int command(int argc, const char * const * argv);		// Funzione di ricezione dell'algoritmo di clustering.	virtual void receive(Packet * p, Handler * h);	// Fa partire il modulo.	virtual void startModule();		// Termine del lavoro del modulo.	virtual void endModule();	void beginBackboneFormation();		void endCycleDiscover();		// Callback from timer to signal a timeout	void timeout(ShivaMessageType type, NodeAddress from, int seq);		// Reach max number of retransmissions	void lastTimeout(ShivaMessageType type, NodeAddress from, int seq);	// Verifica che un pacchetto sia di tipo DATA.	virtual bool isDataPacket(Packet * p);		// Preparazione all'invio di un messaggio al layer inferiore	virtual void prepareSendDataDown(Packet * p);		virtual Color getColor(NodeAddress node) { return NO_COLOR; }		void copy(Path & path1, Path & path2);	void savePath(NodeAddress begin, NodeAddress end, ReachPath path);	void savePaths(Path path1, Path path2);	ReachPath higherPath(ReachPath path1, ReachPath path2);	protected:			Paths paths;                    // Percorsi per calcolare i cicli (tabella).	ShivaStatus status;				// Stato del nodo.		Reachbility reach;              // Percorso per raggiungere un altro nodo BLACK (solo clusterHead).	// Source, Destination, Reach Path.	map<NodeAddress, map<NodeAddress, ReachPath> > reachComplete;		NodeList neighbors_on_route;	// Vicini di un nero che sono su almeno una rotta.	NodeList node_to_turn_off;				map<NodeAddress, NodeList> forward_path;		// Path di forward (solo nodi gateway).	int seq;						// Sequence number dei messaggi di Discovery.	ShivaTimer * timer;				// Gestore dei timeout.		//	// Buffer dei messaggi di DISCOVERY (per le ritrasmissioni).	//	map<int, struct DiscoveryMessage>   myDiscoveryMessages;	map<NodeAddress, NodeAddress>		myTurnedOn;	map<NodeAddress, set<int> >			receivedMessagesFrom;	NodeList							turnOnMessages;		// Vicini che non mi hanno inviato ancora il turn ON.	map<NodeAddress, bool>				turnOnValues;		NodeAddress							finalClusterHead;   // ClusterHead finale.	int with_bottom_router;	protected:			//////////////	// Messages //	//////////////			// Invio di un discover.	void send_DISCOVER(NodeAddress to, struct DiscoveryMessage message);		// Invio di un TURN ON.	void send_TURN_ON(NodeAddress to);	// Invia di una conferma a un messaggio di TURN ON.	void send_CONFIRM_TURN_ON(NodeAddress to);	// Ricezione di un pacchetto di DISCOVER: vengono specificati: la provenienza 	void receive_DISCOVER(NodeAddress from, struct DiscoveryMessage message);		// Ricezione di un pacchetto di TURN ON: viene specificata la provenienza.	void receive_TURN_ON(NodeAddress from, bool on);		struct DiscoveryMessage createDiscover(int ack_seq, Path path1, Path path2, NodeAddress parent);	struct DiscoveryMessage createDummyDiscover(int ack_seq, NodeAddress parent);		// Verifica che in un percorso non sia gia'presente un certo nodo nero.	bool alreadyPresentBlack(Path & path1, Path & path2, NodeAddress node);		NodeAddress greaterCluster();	void processPhase();	private:			// double initialTime;		map<NodeAddress, bool> neighborTurnOn;	public:	static int _DEBUG_;	static int max_length;							// 3;   // Lunghezza massima dei cicli 													// (di nodi BLACK) da tagliare		static double max_delay;					// 0.2; // Delay di una broadcast		static double jitter_timeout_destruction;	static double timeout_destruction;		static int max_timeout_discover;			// 4;   // Numero massimo di timeout al messaggio DISCOVER	static double jitter_timeout_discover;		// 0.2;	// Jitter per il messaggio DISCOVER.	static double timeout_discover;			// 1.0;	// Durata timeout messaggio DISCOVER.		static int max_timeout_turn_on;			// 4;   // Numero massimo di timeout al messaggio DISCOVER	static double jitter_timeout_turn_on;		// 0.2;	// Jitter per il messaggio DISCOVER.	static double timeout_turn_on;				// 1.0;	// Durata timeout messaggio DISCOVER.	};typedef map<NodeAddress, struct Timeout> FromTimeout;typedef map<int, FromTimeout> SeqFromTimeout;/////////////////////////////////// Timer per le ritrasmissioni ///////////////////////////////////class ShivaTimer: public Handler {public:		ShivaTimer(SHIVA_Agent * a) : Handler(), agent(a) {}		void launchDiscover(NodeAddress to, int seq);	void cancelDiscover(NodeAddress from, int seq);	void cancelAllDiscover();		void launchTurnOn(NodeAddress to);	bool cancelTurnOn(NodeAddress from);		void beginDestruction();		void handle(Event* e);	protected:			SHIVA_Agent * agent;		SeqFromTimeout seqFromTimeouts;	TimeoutMap turn_on_messages;	Event * begin_cycle_destruction;	};#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区中文字幕| 国产毛片精品视频| 欧美精品一二三区| 午夜精品久久久久久久99樱桃| 91在线一区二区三区| 亚洲欧美另类小说视频| 91丝袜美女网| 亚洲综合在线免费观看| 欧美日韩国产高清一区二区三区| 婷婷成人激情在线网| 欧美成人在线直播| 国产精品中文字幕日韩精品| 中文字幕一区在线| 91色视频在线| 日韩电影免费在线观看网站| 精品精品欲导航| jlzzjlzz亚洲女人18| 亚洲成人av一区二区| 精品国产凹凸成av人网站| 成人在线视频一区| 亚洲成人资源在线| 91精品国产91久久综合桃花| 国产精品一区专区| 一区二区三区不卡视频| 精品卡一卡二卡三卡四在线| 北岛玲一区二区三区四区| 亚洲成人动漫在线观看| 国产欧美日韩在线看| 欧美亚洲禁片免费| 久久se这里有精品| 一区二区三区精品久久久| 日韩免费福利电影在线观看| 丁香五精品蜜臀久久久久99网站 | 中文字幕乱码一区二区免费| 一本大道av一区二区在线播放| 日韩在线卡一卡二| 国产精品美女久久久久久久久久久| 在线亚洲一区观看| 韩国女主播成人在线| 亚洲午夜三级在线| 欧美国产视频在线| 91亚洲精品乱码久久久久久蜜桃 | 亚洲风情在线资源站| 久久久国产一区二区三区四区小说| 色综合久久88色综合天天6| 老司机精品视频一区二区三区| 亚洲精品免费在线| 国产人伦精品一区二区| 欧美撒尿777hd撒尿| 国产乱一区二区| 青青草精品视频| 一区av在线播放| 国产精品三级电影| 久久综合九色综合欧美98| 欧美日韩一级大片网址| 99re成人在线| 国内精品伊人久久久久av影院| 午夜影院在线观看欧美| 亚洲久草在线视频| 日韩一区在线免费观看| 国产目拍亚洲精品99久久精品| 欧美一级午夜免费电影| 欧美日韩美女一区二区| 色一情一乱一乱一91av| aaa欧美大片| 成人综合婷婷国产精品久久免费| 国精产品一区一区三区mba桃花 | 亚洲动漫第一页| 亚洲乱码国产乱码精品精小说| 欧美国产日产图区| 久久亚区不卡日本| wwww国产精品欧美| 久久免费午夜影院| 久久精品男人的天堂| 精品国产成人在线影院| 精品国产91亚洲一区二区三区婷婷| 精品视频在线视频| 欧美日韩精品电影| 欧美丰满嫩嫩电影| 4438成人网| 日韩欧美国产一区二区在线播放| 欧美日韩一区高清| 5858s免费视频成人| 欧美日韩精品二区第二页| 欧美一区二区三区性视频| 欧美剧情电影在线观看完整版免费励志电影 | 波多野结衣中文字幕一区二区三区 | 精品裸体舞一区二区三区| 日韩欧美综合在线| xvideos.蜜桃一区二区| 欧美国产精品一区二区三区| 欧美经典三级视频一区二区三区| 中文乱码免费一区二区| 亚洲另类色综合网站| 五月激情综合网| 精品一区二区成人精品| 国产精品99久久久久久宅男| 国产凹凸在线观看一区二区| 成人动漫一区二区| 色综合激情五月| 8x8x8国产精品| 精品国产免费人成电影在线观看四季| 久久美女艺术照精彩视频福利播放| 日本一区二区成人| 亚洲影院久久精品| 久久99热这里只有精品| 成人一区二区三区| 欧美视频一区二区| 久久综合五月天婷婷伊人| 最新中文字幕一区二区三区| 五月天亚洲婷婷| 国产精品1区2区3区在线观看| 色婷婷综合久色| 日韩免费观看2025年上映的电影| 久久美女高清视频| 一级特黄大欧美久久久| 久久99精品国产麻豆婷婷洗澡| 成人av在线资源网| 欧美男女性生活在线直播观看| 久久免费国产精品| 亚洲美女免费视频| 精品亚洲成a人在线观看 | 欧美美女视频在线观看| 久久美女高清视频| 五月天久久比比资源色| 处破女av一区二区| 91精品国产高清一区二区三区| 中文字幕亚洲视频| 久久精品国产999大香线蕉| 91视频xxxx| 国产丝袜美腿一区二区三区| 午夜精品免费在线观看| 99在线热播精品免费| 精品久久久网站| 性做久久久久久免费观看| 成人激情电影免费在线观看| 欧美一级在线免费| 亚洲一区二区三区四区在线| 懂色av一区二区在线播放| 欧美v日韩v国产v| 亚洲18色成人| 色偷偷久久一区二区三区| 久久一二三国产| 日韩在线一二三区| 欧美日韩精品一区二区天天拍小说| 久久精品人人做人人综合| 亚洲精品乱码久久久久久久久 | 亚洲乱码国产乱码精品精可以看| 九九视频精品免费| 欧美丝袜丝交足nylons| 亚洲欧美另类综合偷拍| 成人天堂资源www在线| 久久婷婷综合激情| 免费三级欧美电影| 日本福利一区二区| 亚洲欧美另类久久久精品| 成人一级视频在线观看| 久久久久久麻豆| 国内一区二区在线| 日韩欧美激情四射| 三级精品在线观看| 色综合久久66| 亚洲亚洲人成综合网络| 在线亚洲欧美专区二区| 亚洲欧美日韩一区二区| 91网页版在线| 一区二区免费在线播放| 色呦呦国产精品| 亚洲高清一区二区三区| 精品视频在线视频| 日本强好片久久久久久aaa| 欧美久久久久久久久久| 日韩和欧美一区二区三区| 宅男在线国产精品| 日韩精品成人一区二区三区| 欧美二区三区的天堂| 奇米影视在线99精品| 日韩欧美在线123| 精品一区二区在线播放| 国产亚洲欧美日韩在线一区| 粉嫩嫩av羞羞动漫久久久 | 亚洲视频小说图片| 在线观看亚洲a| 午夜精品久久久久| 777午夜精品免费视频| 日韩av在线发布| 久久久九九九九| 9i在线看片成人免费| 亚洲图片欧美一区| 欧美三级资源在线| 奇米影视一区二区三区| 久久久久久久久久久久久久久99 | 久久综合色综合88| 国产在线精品一区二区三区不卡| 欧美国产激情二区三区 | 91丨porny丨国产入口| 亚洲成人午夜影院| 精品久久一二三区| 99久久夜色精品国产网站| 一区二区在线观看av|