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

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

?? stabilizetask.java

?? Chord package into p2psim
?? JAVA
字號:
/***************************************************************************
 *                                                                         *
 *                            StabilizeTask.java                           *
 *                            -------------------                          *
 *   date                 : 16.08.2004                                     *
 *   copyright            : (C) 2004-2008 Distributed and                  *
 *                              Mobile Systems Group                       *
 *                              Lehrstuhl fuer Praktische Informatik       *
 *                              Universitaet Bamberg                       *
 *                              http://www.uni-bamberg.de/pi/              *
 *   email                : sven.kaffille@uni-bamberg.de                   *
 *                      karsten.loesing@uni-bamberg.de                 *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   A copy of the license can be found in the license.txt file supplied   *
 *   with this software or at: http://www.gnu.org/copyleft/gpl.html        *
 *                                                                         *
 ***************************************************************************/
package de.uniba.wiai.lspi.chord.service.impl;

import static de.uniba.wiai.lspi.util.logging.Logger.LogLevel.DEBUG;
import static de.uniba.wiai.lspi.util.logging.Logger.LogLevel.INFO;

import java.util.List;

import de.uniba.wiai.lspi.chord.com.CommunicationException;
import de.uniba.wiai.lspi.chord.com.Node;
import de.uniba.wiai.lspi.chord.com.RefsAndEntries;
import de.uniba.wiai.lspi.util.logging.Logger;

/**
 * Invokes notify method on successor.
 * 
 * @author Karsten Loesing, Sven Kaffille
 * @version 1.0.5
 */
final class StabilizeTask implements Runnable {

	/**
	 * Parent object for performing stabilization.
	 */
	private NodeImpl parent;

	/**
	 * Reference on routing table.
	 */
	private References references;

	private Entries entries;

	/**
	 * Object logger.
	 */
	protected final static Logger logger = Logger
			.getLogger(StabilizeTask.class);

	/**
	 * Creates a new instance, but without starting a thread running it.
	 * 
	 * @param parent
	 *            Parent object for performing stabilization.
	 * @param references
	 *            Reference on routing table.
	 * @throws NullPointerException
	 *             If either of the parameters is <code>null</code>.
	 */
	StabilizeTask(NodeImpl parent, References references, Entries entries) {

		if (parent == null || references == null || entries == null) {
			throw new NullPointerException(
					"No argument to constructor may be null!");
		}

		this.parent = parent;
		this.references = references;
		this.entries = entries;
	}

	public void run() {
		try {

			final boolean debugEnabled = StabilizeTask.logger
					.isEnabledFor(DEBUG);
			final boolean infoEnabled = StabilizeTask.logger.isEnabledFor(INFO);

			// start of method
			if (debugEnabled) {
				StabilizeTask.logger
						.debug("Stabilize method has been invoked periodically");
			}

			// determine successor
			Node successor = this.references.getSuccessor();
			if (successor == null) {

				// nothing to stabilize
				if (infoEnabled) {
					StabilizeTask.logger
							.info("Nothing to stabilize, as successor is null");
					return;
				}

			} else {

				// notify successor and obtain its predecessor reference and
				// successor list
				List<Node> mySuccessorsPredecessorAndSuccessorList;
				try {
					/*
					 * NOTIFYING successor.
					 */
					mySuccessorsPredecessorAndSuccessorList = successor
							.notify(this.parent);
					if (infoEnabled) {
						StabilizeTask.logger
								.info("Received response to notify request from "
										+ "successor" + successor.getNodeID());
					}
				} catch (CommunicationException e) {
					if (debugEnabled) {
						StabilizeTask.logger
								.debug(
										"Invocation of notify on node "
												+ successor.getNodeID()
												+ " was not successful due to a "
												+ "communication failure! Successor has "
												+ "failed during stabilization! "
												+ "Removing successor!", e);
					}
					this.references.removeReference(successor);
					return;
				}

				/*
				 * 19.06.2007. sven 
				 * Test if our successor has a different
				 * predecessor than this node.
				 */
				if ((mySuccessorsPredecessorAndSuccessorList.size() > 0)
						&& (mySuccessorsPredecessorAndSuccessorList.get(0) != null)) {
					if (!this.parent.getNodeID()
							.equals(mySuccessorsPredecessorAndSuccessorList
									.get(0).getNodeID())) {
						/*
						 * If it does not know us, we have to fetch all entries
						 * relevant for us.
						 */
						RefsAndEntries refsAndEntries = successor
								.notifyAndCopyEntries(this.parent);
						mySuccessorsPredecessorAndSuccessorList = refsAndEntries
								.getRefs();
						/*
						 * and have to store them locally
						 */
						this.entries.addAll(refsAndEntries.getEntries());
					}
				}

				for (Node newReference : mySuccessorsPredecessorAndSuccessorList) {
					this.references.addReference(newReference);

					if (debugEnabled) {
						logger.debug("Added new reference: " + newReference);
					}
				}
				if (infoEnabled) {
					StabilizeTask.logger.info("Invocation of notify on node "
							+ successor.getNodeID() + " was successful");
				}
			}
		} catch (Exception e) {
			StabilizeTask.logger.warn(
					"Unexpected Exception caught in StabilizeTask!", e);
			e.printStackTrace();
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线免费观看| 成人免费高清视频| 色综合久久88色综合天天6| 欧美成人三级电影在线| 亚洲欧美日韩成人高清在线一区| 免费高清在线视频一区·| 色综合婷婷久久| 国产精品网友自拍| 国产一区二区精品久久| 欧美成人福利视频| 不卡在线观看av| 日韩一区二区三区观看| 欧美日韩一卡二卡| 欧美三级韩国三级日本三斤| 在线播放视频一区| 欧美又粗又大又爽| 欧美三级在线看| 国产亚洲福利社区一区| 麻豆成人免费电影| 欧美一区二区日韩| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩精品欧美日韩精品| 无码av免费一区二区三区试看 | 国产精品无圣光一区二区| 国内精品久久久久影院色| 国产日韩精品久久久| 成人黄色大片在线观看| 亚洲乱码国产乱码精品精小说| 欧美性猛交xxxxxxxx| 日日夜夜免费精品视频| 欧美日韩高清一区二区| 美女任你摸久久| 综合久久国产九一剧情麻豆| 在线视频欧美精品| 免费欧美在线视频| 国产精品久久夜| 精品国产成人系列| 色天使色偷偷av一区二区| 99久久er热在这里只有精品15| 国产一区二区不卡老阿姨| 精品国产乱码久久久久久影片| 免播放器亚洲一区| 国产精品久久久久久久久免费樱桃| 欧美日韩一区 二区 三区 久久精品| 五月天久久比比资源色| 国产精品视频看| 欧美一区二区三区免费| 91蜜桃免费观看视频| 免费成人在线播放| 夜夜爽夜夜爽精品视频| 久久久久久久久久美女| 欧美日韩第一区日日骚| 91久久国产综合久久| 福利一区在线观看| 成人午夜视频在线| 国产传媒久久文化传媒| 国精品**一区二区三区在线蜜桃| 国产精品久久久久久久第一福利 | 亚洲男人天堂一区| 中文字幕乱码亚洲精品一区 | 日韩成人精品在线| 亚洲影院在线观看| 亚洲综合色视频| 亚洲福中文字幕伊人影院| 亚洲国产毛片aaaaa无费看| 日韩毛片在线免费观看| 亚洲精品久久嫩草网站秘色| 一区二区三区中文在线| 日本一二三不卡| 国产精品久久久久久久久晋中 | 久久午夜电影网| 国产日韩亚洲欧美综合| 一区二区三区小说| 美女在线一区二区| 色域天天综合网| 日韩女优av电影| 午夜精品影院在线观看| 国产精品一线二线三线| 在线观看精品一区| 国产日韩av一区二区| 一区二区三区不卡视频在线观看| 美国av一区二区| 99国产精品99久久久久久| 精品播放一区二区| 午夜婷婷国产麻豆精品| 北条麻妃国产九九精品视频| 欧美一区二区免费| 亚洲成人中文在线| 91麻豆swag| 国产精品国产三级国产普通话99 | 日韩电影在线一区二区三区| 成人av影视在线观看| 久久久99精品久久| 国产美女娇喘av呻吟久久| 日韩欧美黄色影院| 日韩不卡手机在线v区| 欧美日韩成人在线一区| 亚洲成av人在线观看| 欧美在线制服丝袜| 亚洲高清不卡在线| 欧美视频一区二区在线观看| 中文字幕日韩av资源站| 色综合久久久久久久久| 亚洲欧美国产三级| 欧美亚洲免费在线一区| 亚洲综合在线免费观看| 在线日韩国产精品| 日韩精品电影在线观看| 欧美一区二区三区视频在线观看| 日韩av在线播放中文字幕| 久久综合色婷婷| 欧美亚洲高清一区| 成人综合在线观看| 亚洲成人一区二区在线观看| 中文字幕制服丝袜成人av| 久久久久久**毛片大全| 久久99这里只有精品| 欧美日韩二区三区| 91在线视频观看| 成人av在线资源| 成人一区二区三区中文字幕| 国产毛片精品一区| 久久国产婷婷国产香蕉| 日本成人在线看| 日韩国产欧美在线播放| 亚洲mv大片欧洲mv大片精品| 亚洲欧美日韩国产综合| 1区2区3区精品视频| √…a在线天堂一区| 国产精品久久久一本精品| 久久免费偷拍视频| 欧美mv和日韩mv的网站| 欧美老肥妇做.爰bbww视频| 在线视频综合导航| 在线观看欧美精品| 精品视频免费在线| 欧美日韩国产片| 欧美浪妇xxxx高跟鞋交| 欧美日韩精品一区二区| 欧美日韩三级视频| 欧美一级欧美三级| 日韩欧美一级片| 欧美激情一区三区| 亚洲欧美偷拍卡通变态| 亚洲高清免费在线| 男女男精品视频网| 国产传媒久久文化传媒| 97精品超碰一区二区三区| 欧美日韩亚洲国产综合| 日韩一区二区在线看片| 久久婷婷久久一区二区三区| 久久婷婷久久一区二区三区| 日韩理论电影院| 亚洲最色的网站| 免费成人在线视频观看| 国产乱人伦精品一区二区在线观看 | 亚洲电影视频在线| 国模冰冰炮一区二区| 在线观看欧美精品| 国产精品卡一卡二卡三| 亚洲人成在线播放网站岛国| 经典三级一区二区| 欧美日韩日日摸| 亚洲女子a中天字幕| 国产乱一区二区| 精品国产免费一区二区三区四区| 亚洲综合丁香婷婷六月香| 成人av网在线| 中文字幕第一区综合| 激情综合色丁香一区二区| 在线不卡的av| 日韩avvvv在线播放| 欧美性受xxxx黑人xyx性爽| 国产日韩欧美综合在线| 激情深爱一区二区| 91精品免费观看| 久久精品理论片| 91精品国产手机| 秋霞午夜av一区二区三区 | 99精品在线观看视频| 亚洲国产激情av| 97精品视频在线观看自产线路二 | 2020日本不卡一区二区视频| 青草国产精品久久久久久| 日韩一区二区三区高清免费看看| 亚洲国产日韩在线一区模特| 欧美日韩国产乱码电影| 亚洲国产精品久久久男人的天堂| 色婷婷狠狠综合| 亚洲高清免费一级二级三级| 在线亚洲高清视频| 亚洲韩国精品一区| 欧美乱妇23p| 日韩成人精品在线| 欧美一区2区视频在线观看| 看国产成人h片视频| 精品欧美乱码久久久久久| 国产真实乱子伦精品视频| 国产精品美女久久福利网站| 欧美日免费三级在线|