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

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

?? structure.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 _ALZOUBI_STRUCTURE_H_
#define _ALZOUBI_STRUCTURE_H_

#include "clustering-header.h"
#include <map>
#include <list>

//---------------------------------------------------------------------------------
// Tipi di messaggio
//---------------------------------------------------------------------------------
typedef enum
{
    ALZOUBI_COLOR = 0x0,		// Messaggio per segnalare il colore di un nodo.
	ALZOUBI_LAST = 0x1,
    ALZOUBI_REQUEST = 0x2,      // Richiesta di ritrasmissione.
    ALZOUBI_CONFIRM = 0x3,		// Mesaggio di conferma per l'avvenuta ricezione.
	ALZOUBI_DATA = 0x4
} AlzoubiMessageType;

//---------------------------------------------------------------------------------
// Informazioni sull'albero di appartenenza.
//---------------------------------------------------------------------------------
struct TreeInfo {
    NodeList childs;    	// Nodi figli.
    NodeAddress parent;         // Nodo genitore.
};

//---------------------------------------------------------------------------------
// Informazioni su di un frammento.
//---------------------------------------------------------------------------------
struct FragmentInfo {
    NodeAddress ID;		// Identita' del leader del frammento.
    int size;                   // Dimensione del frammento.

    // Un frammento e'minore di un'altro se e'di dimensione minore 
    // oppure se e'delle stesse dimensioni e ha un ID minore.
    bool operator< (const struct FragmentInfo & fragment) {
        if (size < fragment.size)
            return true;
    	return ((size == fragment.size) && 
                (ID < fragment.ID));
    }
};

//---------------------------------------------------------------------------------
// Lista di nodi, per round che richiede la conferma dei messaggi INFO inviati.
//---------------------------------------------------------------------------------
typedef map<int, NodeList> ConfirmationNodes;

//---------------------------------------------------------------------------------
// Messaggio INFO.
//---------------------------------------------------------------------------------
struct InfoMessage {
    struct FragmentInfo fragment;	// Frammento a cui appartiene il nodo mittente.
    struct FragmentInfo new_fragment;		// Frammento a cui il nodo dello stesso frammento 
    						// deve appartenere.
    NodeAddress parent;                         // Genitore del mittente.
    int round;                                  // Round del messaggio.
};

//---------------------------------------------------------------------------------
// Buffer per i messaggi di INFO inviati: uno per ogni round.
//---------------------------------------------------------------------------------
typedef map<int, struct InfoMessage> BufferInfoMessages;

//---------------------------------------------------------------------------------
// Messaggio FEEDBACK.
//---------------------------------------------------------------------------------
struct FeedbackMessage {
    struct FragmentInfo fragment;	// Frammento a cui appartiene il nodo mittente.
    bool maximal_fragment_available;            // Indica se il mittente conosce o no un frammento vicino massimale.
    struct FragmentInfo maximal_fragment;	// Informazioni sul frammento massimale.
    int node_count;				// Numero di nodi del sottoalbero radicato nel mittente.
    int round;					// Round del messaggio.
};

//---------------------------------------------------------------------------------
// Buffer per i messaggi di FEEDBACK inviati: uno per ogni round.
//---------------------------------------------------------------------------------
typedef map<int, struct FeedbackMessage> BufferFeedbackMessages;

//---------------------------------------------------------------------------------
// Messaggi memorizzati (per le ritrasmissioni).
//---------------------------------------------------------------------------------
struct StoredMessages {
    BufferInfoMessages info;		// Messaggi di INFO.
    BufferFeedbackMessages feedback;	// Messaggi di FEEDBACK.
};

//---------------------------------------------------------------------------------
// Messaggio ACTION.
//---------------------------------------------------------------------------------
struct ActionMessage {
    struct FragmentInfo current_fragment;	// Frammento del messaggio di ACTION.
	int round;
};

//---------------------------------------------------------------------------------
// Messaggio LEADER.
//---------------------------------------------------------------------------------
struct LeaderMessage {
    struct FragmentInfo leader;		// Informazioni sul leader e la grandezza del frammento globale.
    NodeAddress parent;                 // Genitore del mittente.
    int level;              		// Livello dell'albero del mittente.
    bool confirm;           		// True indica un messaggio ritrasmesso, richiede la ritrasmissione.
                            		// Non si usa il messaggio di request per specificare i dati del leader
                                        // perche'in questo modo, posso inviare le informazioni sul leader.
};

//---------------------------------------------------------------------------------
// Messaggio COLOR.
//---------------------------------------------------------------------------------
struct ColorMessage {
    bool dominator;			// True = DOMINATOR, False = DOMINATEE
    int round;				// Round del messaggio
};

//---------------------------------------------------------------------------------
// Messaggio LAST.
//---------------------------------------------------------------------------------
struct LastMessage {
	Color color;
};

//---------------------------------------------------------------------------------
// Messaggio REQUEST.
//---------------------------------------------------------------------------------
struct RequestMessage {
    AlzoubiMessageType type;			// Tipo i messaggio richiesto.
    int round;                          // Round del messaggio.
};

//---------------------------------------------------------------------------------
// Messaggio CONFIRM.
//---------------------------------------------------------------------------------
struct ConfirmMessage {
    AlzoubiMessageType type;			// Tipo di messaggio da confermare.
    bool send;				// True se il messaggio e'l'invio, False se e'la risposta.
    int round;				// Round del messaggio.
};

//---------------------------------------------------------------------------------
// Collezione principale di dati sulla leader election phase.
//---------------------------------------------------------------------------------
struct LeaderElectionData {
    bool candidate;								// True se il nodo e'un candidato.
    struct TreeInfo tree;						// Informazioni sull'albero interno 
												// al frammento a cui il nodo appartiene.
    struct FragmentInfo fragment;				// Informazioni sul frammento a cui il nodo appartiene.
    map<int, bool> maximal_fragment_available;	// True se si conosce un frammento massimale
    map<int, struct FragmentInfo> maximal_fragment;	// Il frammento massimale
    map<int, NodeAddress> maximal_fragment_node;	// Nodo a cui legarsi.
    map<int, NodeAddress> stored_path;			// Vicino verso il quale si raggiunge l'edge node massimale.
                                                // -1 indica che il nodo corrente e'l'edge node.

	// Messaggio INFO proveniente dal nodo di JOIN memorizzato: serve perche'il messaggio di ACTION
	// puo'giungere dopo la ricezione del messaggio di INFO da parte del nodo del frammento massimale 
	// che darebbe il via alla propagazione dell'INFO anche nel frammento del nodo.
	map<int, struct InfoMessage> maximal_fragment_node_info_message;
	
	// Memorizza la ricezione di un messaggio di action per un certo round.
	map<int, bool> action_for_round;
	
    NodeAddress old_fragment_identity;			// Vecchia identita'del frammento.
    NodeAddress new_fragment_identity;          // Identita'del frammento a cui legarsi.
    NodeList info_messages;						// Vicini che ancora devono inviare il messaggio di INFO.
    NodeList feedback_messages;					// Vicini che ancora devono inviare il messaggio di FEEDBACK.
    NodeList leader_messages;					// Vicini che devono ancora inviare il messaggio di LEADER.
    int sub_tree_partial_count;					// Conteggio dei nodi del sottoalbero radicato nel nodo corrente.
    
    //------------------
    // Buffers.
    //------------------
    list<pair<NodeAddress, struct InfoMessage> > buffer_info;		// Messaggi di INFO inviati dai vicini.
    list<pair<NodeAddress, struct FeedbackMessage> > buffer_feedback;	// Messaggi di FEEDBACK inviati dai vicini.
	map<int, pair<NodeAddress, NodeAddress> > buffer_action;
    ConfirmationNodes confirmation_nodes_info;				// Nodi dai quali ci si aspetta un INFO message.
    
    //------------------
    // Messaggi inviati.
    //------------------
    struct StoredMessages stored_messages;

    //------------------
    // Round dell'algoritmo.
    //------------------
    int round;

};



struct CDSConstructionData {
    
    Color color;
    
    //==========================//
    // Second phase of algorithm //
    //==========================//
    
    NodeAddress parent;
    NodeAddress leader;
    int tree_size;
    int level;
    NodeList childs;
    
    NodeList white_neighbors;		// Lista di vicini WHITE.
    NodeList childs_no_dominatee;	// Lista dei vicini che non hanno mai inviato un
									// messaggio di tipo DOMINATEE.
    NodeList black_neighbors;		// Lista dei vicini BLACK.
    NodeList lower_rank;			// Lista dei vicini di rango inferiore che non hanno
									// mai inviato un messaggio di tipo DOMINATEE.
    int lower_rank_size;			// Numero di vicini di rango inferiore.
    NodeList gray_neighbors;		// Vicini GRAY.
    NodeList childs_gray_or_black;	// Nodi figli GRAY o BLACK.
    
    map<NodeAddress, int> levels;	// Livello di un vicino.
	
	map<NodeAddress, Color> lastColor;		// Ultimo colore di un vicino.
    
    //=========//
    // Buffers //
    //=========//
    
    map<NodeAddress, struct ColorMessage> messages[2];		// Messaggi CDS dai vicini.
    int round;												// Numero di round.
    struct ColorMessage myFirstColor;						// Buffer di messaggi inviati.
    struct ColorMessage mySecondColor;						// Buffer di messaggi inviati.
	Color myLastColor;										// Ultimo colore del nodo.

	NodeList last_messages;					// Vicini che devono inviare il messaggio di LAST.

    bool endFirstCDSBufferization;			// E'true se il buffer 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区综合| 日韩欧美一区电影| 欧美日本在线一区| 怡红院av一区二区三区| 成人av午夜影院| 国产婷婷色一区二区三区四区 | 国产精品久久久久久久久免费樱桃 | 亚洲成人激情av| 91久久精品一区二区| 成人免费在线观看入口| 99久久婷婷国产精品综合| 国产欧美一区视频| 成人免费av在线| 成人免费在线观看入口| 99v久久综合狠狠综合久久| 国产精品国产成人国产三级| 国产成+人+日韩+欧美+亚洲| 日韩免费高清视频| 韩国女主播成人在线| 精品国产精品网麻豆系列 | 色综合久久久久综合体| 国产精品久久网站| 成人av网站免费观看| 中文字幕一区二区三区不卡| 99视频有精品| 一级日本不卡的影视| 欧美日韩不卡一区| 久久99精品国产麻豆婷婷洗澡| 在线观看成人免费视频| 青青草原综合久久大伊人精品| 欧美一区二区视频观看视频| 精品一区二区三区免费播放| 国产校园另类小说区| aaa国产一区| 亚洲成人av在线电影| 欧美日韩国产小视频| 视频在线观看一区二区三区| 欧美xxxxx牲另类人与| 福利视频网站一区二区三区| 亚洲乱码日产精品bd| 欧美日韩国产免费| 日本成人超碰在线观看| 综合亚洲深深色噜噜狠狠网站| 色综合天天综合网天天看片| 日韩电影在线观看电影| 久久综合中文字幕| 成人国产在线观看| 婷婷一区二区三区| 国产精品久久久久久久久图文区 | 蜜臀精品一区二区三区在线观看| 久久综合狠狠综合| 色欧美日韩亚洲| 久久疯狂做爰流白浆xx| 亚洲欧美综合另类在线卡通| 91精品国产91综合久久蜜臀| 成人午夜激情片| 日本免费新一区视频| 亚洲图片激情小说| 精品国产一区二区国模嫣然| 色国产综合视频| 精品午夜久久福利影院| 一区二区三区加勒比av| 精品国产一区二区三区不卡| 欧美这里有精品| 成人一二三区视频| 一区二区三区四区视频精品免费| 精品国产乱码久久久久久免费| 91在线观看下载| 国产一区二区美女诱惑| 亚洲成av人片在线| 国产亚洲短视频| 日韩三级在线免费观看| 欧美日韩精品一二三区| 成人亚洲一区二区一| 久久国产乱子精品免费女| 一区二区三区在线观看欧美 | 久久精品国产第一区二区三区| 一区二区三区精品视频在线| 欧美一区二区二区| 欧美日韩一区二区不卡| 97超碰欧美中文字幕| 高清国产一区二区三区| 美女一区二区视频| 天天操天天干天天综合网| 亚洲精品成a人| 18涩涩午夜精品.www| 国产无一区二区| 国产欧美一区二区精品婷婷| 精品精品国产高清一毛片一天堂| 欧美挠脚心视频网站| 在线一区二区三区做爰视频网站| 成人av在线一区二区三区| 福利一区二区在线| 波多野结衣精品在线| 99国产欧美久久久精品| 99re热这里只有精品免费视频| 欧美色大人视频| 欧美刺激午夜性久久久久久久| 久久久亚洲欧洲日产国码αv| 国产清纯白嫩初高生在线观看91 | 欧美亚洲愉拍一区二区| 欧美日韩美女一区二区| 精品国产成人系列| 国产精品每日更新在线播放网址 | 99精品视频在线观看| 欧美午夜一区二区三区| 日韩欧美一级特黄在线播放| 国产日韩精品久久久| 亚洲精品欧美在线| 蓝色福利精品导航| 99re在线精品| 精品日韩欧美在线| 亚洲欧美日韩小说| 麻豆成人综合网| 91看片淫黄大片一级在线观看| 欧美精品123区| 国产欧美一区视频| 日韩不卡手机在线v区| 大桥未久av一区二区三区中文| 日本精品视频一区二区| 精品奇米国产一区二区三区| 成人欧美一区二区三区白人 | 日韩vs国产vs欧美| av网站免费线看精品| 日韩午夜在线影院| 亚洲免费在线观看视频| 麻豆成人综合网| 欧洲中文字幕精品| 欧美国产激情一区二区三区蜜月| 国产一区二区视频在线播放| 成人动漫视频在线| 91精品国产手机| 一区二区三区中文字幕| 国产成人av一区二区| 日韩一区二区三区在线视频| 一区二区三区日韩在线观看| 国产精品亚洲а∨天堂免在线| 欧美喷潮久久久xxxxx| 亚洲精品免费看| 国产成人精品综合在线观看| 日韩一区二区三区电影| 亚洲一区在线看| 91小视频在线观看| 国产精品人人做人人爽人人添| 蜜桃视频在线一区| 欧美午夜精品电影| 国产精品伦理一区二区| 国产一区免费电影| 欧美tickling网站挠脚心| 亚洲高清三级视频| 91福利区一区二区三区| 1024成人网色www| 丁香五精品蜜臀久久久久99网站 | 成人国产精品免费观看动漫| 欧美mv和日韩mv国产网站| 三级一区在线视频先锋| 欧美亚洲高清一区| 亚洲精品老司机| 色视频成人在线观看免| 中文字幕在线不卡| 99在线热播精品免费| 欧美国产日韩在线观看| 成人午夜激情片| 国产精品欧美精品| 不卡视频在线观看| 国产精品理论片| 99久久婷婷国产综合精品电影| 国产精品亲子伦对白| voyeur盗摄精品| 中文字幕一区二区三区在线观看| 成人黄色一级视频| 亚洲免费观看在线视频| 99久久亚洲一区二区三区青草 | 亚洲影院理伦片| 欧美色老头old∨ideo| 午夜欧美大尺度福利影院在线看| 欧美日韩国产区一| 日本不卡一区二区三区高清视频| 欧美一卡2卡3卡4卡| 九九视频精品免费| 久久久久国产精品免费免费搜索| 国产呦精品一区二区三区网站| 欧美成人a∨高清免费观看| 国产在线乱码一区二区三区| 久久久亚洲午夜电影| 成人av在线网站| 亚洲成人av一区二区三区| 91精品国产入口| 国产裸体歌舞团一区二区| 亚洲国产精品高清| 色哟哟欧美精品| 日韩电影在线一区| 中文字幕av免费专区久久| 色悠悠久久综合| 日韩激情一区二区| 国产清纯白嫩初高生在线观看91| 69精品人人人人| 久久机这里只有精品| 中文字幕中文字幕在线一区 | 国产精品影视在线|