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

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

?? socketendpoint.java

?? Chord package into p2psim
?? JAVA
字號:
/***************************************************************************
 *                                                                         *
 *                            SocketEndpoint.java                          *
 *                            -------------------                          *
 *   date                 : 12.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.com.socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ThreadPoolExecutor;

import de.uniba.wiai.lspi.chord.com.Endpoint;
import de.uniba.wiai.lspi.chord.com.Node;
import de.uniba.wiai.lspi.chord.data.URL;
import de.uniba.wiai.lspi.util.logging.Logger;
import static de.uniba.wiai.lspi.util.logging.Logger.LogLevel.*;

/**
 * This class represents an {@link Endpoint} for communication over socket
 * protocol. It provides a <code>ServerSocket</code> to that clients can
 * connect and starts for each incoming connection a
 * {@link de.uniba.wiai.lspi.chord.com.socket.RequestHandler} that handles
 * {@link de.uniba.wiai.lspi.chord.com.socket.Request}s for method invocations
 * from remote nodes. These {@link de.uniba.wiai.lspi.chord.com.socket.Request}s
 * are sent by one {@link SocketProxy} representing the node, that this is the
 * endpoint for, at another node.
 * 
 * @author sven
 * @version 1.0.5
 */
public final class SocketEndpoint extends Endpoint implements Runnable {

	/**
	 * Logger for this endpoint.
	 */
	private final static Logger logger = Logger.getLogger(SocketEndpoint.class);

	private final static boolean debug = logger.isEnabledFor(DEBUG);

	/**
	 * {@link Set} containing all {@link RequestHandler}s created by this
	 * endpoint.
	 */
	private Set<RequestHandler> handlers = new HashSet<RequestHandler>();

	/**
	 * The Socket this endpoint listens to for connections.
	 */
	private ServerSocket mySocket = null;

	/**
	 * The {@link java.util.concurrent.Executor} responsible for carrying out
	 * executions of methods with help of an instance of
	 * {@link InvocationThread}.
	 */
	private final ThreadPoolExecutor invocationExecutor = InvocationThread
			.createInvocationThreadPool();

	/**
	 * Creates a new <code>SocketEndpoint</code> for the given {@link Node}
	 * with {@link URL url}. <code>url</code> must have the protocol indexed
	 * by <code>{@link URL#SOCKET_PROTOCOL}</code> in the
	 * <code>{@link URL#KNOWN_PROTOCOLS}</code> array.
	 * 
	 * @param node1
	 *            The {@link Node} node this endpoint provides connections to.
	 * @param url1
	 *            The {@link URL} of this endpoint.
	 */
	public SocketEndpoint(Node node1, URL url1) {
		super(node1, url1);
		SocketEndpoint.logger.info("Initialisation finished.");
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.uniba.wiai.lspi.chord.com.Endpoint#openConnections()
	 */
	protected void openConnections() {
		/* Open server socket on port specified by url */
		try {
			if (debug) {
				SocketEndpoint.logger
						.debug("Trying to open server socket on port "
								+ this.url.getPort());
			}
			this.mySocket = new ServerSocket(this.url.getPort());
			this.setState(LISTENING);
			if (debug) {
				SocketEndpoint.logger.debug("Server socket opened on port "
						+ this.url.getPort() + ". Starting listener thread.");
			}
			/* and start thread to listen for incoming connections. */
			Thread listenerThread = new Thread(this, "SocketEndpoint_"
					+ this.url + "_Thread");
			listenerThread.start();
			if (debug) {
				SocketEndpoint.logger.debug("Listener Thread " + listenerThread
						+ "started. ");
			}
		} catch (IOException e) {
			/* TODO: change type of exception */
			throw new RuntimeException(
					"SocketEndpoint could not listen on port "
							+ this.url.getPort() + " " + e.getMessage());
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.uniba.wiai.lspi.chord.com.Endpoint#entriesAcceptable()
	 */
	protected void entriesAcceptable() {
		if (debug) {
			SocketEndpoint.logger.debug("entriesAcceptable() called");
		}
		this.setState(ACCEPT_ENTRIES);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.uniba.wiai.lspi.chord.com.Endpoint#closeConnections()
	 */
	protected void closeConnections() {
		this.setState(STARTED);
		/* try to close socket */
		try {
			this.mySocket.close();
		} catch (IOException e) {
			/* should not occur */
			if (debug) {
				SocketEndpoint.logger.debug("Could not close socket "
						+ this.mySocket, e);
			}
		}
		this.invocationExecutor.shutdownNow();
		/*
		 * Close outgoing connections.
		 */
		SocketProxy.shutDownAll(); 
	}

	/**
	 * Run method from {@link Runnable} to accept connections from clients. This
	 * method runs until {@link #closeConnections()} is called. It creates
	 * threads responsible for the handling of requests from other nodes.
	 */
	public void run() {

		// Cleaner cleaner = new Cleaner();
		while (this.getState() > STARTED) {
			if (debug) {
				SocketEndpoint.logger.debug("Waiting for incoming connection.");
			}
			Socket incomingConnection = null; 
			try {
				incomingConnection = this.mySocket.accept();
				if (debug) {
					SocketEndpoint.logger.debug("Incoming connection "
							+ incomingConnection);
				}
				/*
				 * Create a handler for requests that come in over the newly
				 * created socket.
				 */
				if (debug) {
					SocketEndpoint.logger
							.debug("Creating request handler for incoming connection.");
				}
				RequestHandler handler = new RequestHandler(this.node,
						incomingConnection, this);
				/*
				 * Remember handler to be able to close its connection (shut it
				 * down.
				 */
				this.handlers.add(handler);
				/* Start handler thread */
				if (debug) {
					SocketEndpoint.logger
							.debug("Request handler created. Starting thread.");
				}
				handler.start();
				if (debug) {
					SocketEndpoint.logger
							.debug("Request handler thread started.");
				}
			} catch (IOException e) {
				/* Can this happen? */
				if ((this.getState() > STARTED)) {
					if (debug) {
						SocketEndpoint.logger.debug(
								"Could not accept connection from other node!",
								e);
					}
					if (incomingConnection != null) {
						try {
							incomingConnection.close();
						} catch (IOException e1) {
							// can be ignored, as incoming Connection is no longer needed. 
						} 
						incomingConnection = null; 
					}
				} else {
					/* Socket has been closed */
				}
				/* TODO: go on or notify some one? */
			}
		}
		SocketEndpoint.logger.info("Listener thread stopped.");
		/* Disconnect all */
		for (RequestHandler handler : this.handlers) {
			handler.disconnect();
		}
		this.handlers.clear();
	}

	/**
	 * Schedule an invocation of a local method to be executed.
	 * 
	 * @param invocationThread
	 */
	void scheduleInvocation(InvocationThread invocationThread) {
		if (debug) {
			logger.debug("Scheduling invocation: " + invocationThread);
		}
		this.invocationExecutor.execute(invocationThread);
		if (debug) {
			logger.debug("Current jobs: "
					+ this.invocationExecutor.getQueue().size());
			logger.debug("Active jobs: "
					+ this.invocationExecutor.getActiveCount());
			logger.debug("Completed jobs: "
					+ this.invocationExecutor.getCompletedTaskCount());
		}

	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产美女浴室洗澡无遮挡| 成人综合婷婷国产精品久久蜜臀| 国产成人在线观看| 国产精品免费网站在线观看| 亚洲成av人**亚洲成av**| 白白色 亚洲乱淫| 日本一区二区三区国色天香| 免费高清在线一区| 久久精品一区二区三区四区| 不卡视频在线观看| 日韩欧美一二区| 日本视频中文字幕一区二区三区| 91精品91久久久中77777| 91精品国产一区二区三区| 中文字幕欧美区| 久久不见久久见免费视频7| 日韩精品在线一区二区| 精品成a人在线观看| 国产美女一区二区三区| 亚洲国产日韩av| 久久影视一区二区| 蜜臀久久99精品久久久久久9| 欧美群妇大交群中文字幕| 国产精品你懂的在线欣赏| 99精品视频一区二区三区| 国产欧美精品区一区二区三区 | 精品一区二区久久| 99久久国产综合精品麻豆| jiyouzz国产精品久久| 99综合影院在线| 久久综合色天天久久综合图片| 亚洲成人一区在线| 中文一区在线播放| 久久精品国产99国产| 91网站最新网址| 老司机精品视频线观看86| www久久精品| 欧美综合欧美视频| 天天色综合天天| 亚洲男人天堂av| 欧美电视剧在线观看完整版| 成人国产电影网| 午夜成人在线视频| 亚洲国产精品高清| 欧美精品一级二级三级| 成人免费毛片aaaaa**| 亚洲国产另类av| 国产欧美一区二区三区沐欲| 欧美午夜精品一区二区三区| 亚洲成人免费电影| 欧美电影免费观看高清完整版在线| 欧美精品在线一区二区三区| 亚洲国产另类av| 欧美久久免费观看| 在线观看亚洲成人| 一区二区三区在线免费播放| 福利一区福利二区| 免费成人结看片| 国产精品久久久久久久久快鸭| 久久噜噜亚洲综合| 91精品国产欧美日韩| 一区二区三区四区不卡视频| 亚洲国产另类av| 午夜电影一区二区三区| 另类的小说在线视频另类成人小视频在线| 一区二区三区中文字幕| 亚洲国产综合人成综合网站| 国产亚洲精品bt天堂精选| 一区二区日韩电影| 国产盗摄视频一区二区三区| 欧洲色大大久久| 欧美日本韩国一区| 欧美国产欧美综合| 亚洲精品国产第一综合99久久| 亚洲国产精品传媒在线观看| 久久久久久久久久看片| 精品国产1区二区| 欧美成va人片在线观看| 精品美女在线观看| 亚洲另类在线视频| 色爱区综合激月婷婷| 欧美午夜电影一区| 91国偷自产一区二区开放时间 | 国产在线播精品第三| 国内精品国产成人国产三级粉色| 开心九九激情九九欧美日韩精美视频电影| 美女视频黄a大片欧美| 国模娜娜一区二区三区| 国产一区999| 激情综合网天天干| 91丨porny丨在线| 欧美精品在线观看一区二区| 久久综合九色综合欧美亚洲| 日韩av中文字幕一区二区| 99视频在线精品| 日韩中文字幕麻豆| 美女视频网站久久| 91一区二区三区在线观看| 亚洲精品乱码久久久久久| 久久精品视频在线看| 97精品国产露脸对白| 3751色影院一区二区三区| 亚洲品质自拍视频| 国模娜娜一区二区三区| 欧美电影免费观看高清完整版在线观看 | 精品无人区卡一卡二卡三乱码免费卡 | 欧美中文字幕一区二区三区| 久久99精品久久久| 欧美在线你懂得| 国产精品国产精品国产专区不蜜 | 捆绑紧缚一区二区三区视频| 国产高清不卡二三区| 99久久精品免费看国产免费软件| 欧美日本一道本| 亚洲精品五月天| 激情综合亚洲精品| 亚洲国产精品久久久久秋霞影院 | 久久久精品欧美丰满| 亚洲大片免费看| 91在线观看高清| 国产日韩欧美精品在线| 久久精品国产色蜜蜜麻豆| 欧美日韩国产乱码电影| 亚洲精品成人精品456| 成人精品高清在线| 国产亚洲综合性久久久影院| 免费在线观看视频一区| 在线免费不卡电影| 日韩毛片精品高清免费| 成人妖精视频yjsp地址| 久久综合狠狠综合久久激情 | 久久爱www久久做| 91精品欧美综合在线观看最新| 亚洲午夜影视影院在线观看| 欧美专区日韩专区| 亚洲成人你懂的| 欧美另类久久久品| 香蕉成人啪国产精品视频综合网| 欧美性感一区二区三区| 亚洲h动漫在线| 欧美区在线观看| 全国精品久久少妇| 欧美刺激脚交jootjob| 另类专区欧美蜜桃臀第一页| 欧美成人精品3d动漫h| 精久久久久久久久久久| 精品国产一区久久| 国产一区二区三区综合| 国产欧美精品在线观看| 99在线精品一区二区三区| 亚洲精品中文字幕乱码三区| 日本高清不卡aⅴ免费网站| 亚洲高清视频中文字幕| 91麻豆精品国产91久久久久久| 日本91福利区| 国产日韩欧美a| 91小视频免费观看| 亚洲成在人线免费| 日韩欧美不卡在线观看视频| 国产精品一区在线观看你懂的| 亚洲国产精品高清| 欧美在线观看你懂的| 日本aⅴ亚洲精品中文乱码| 久久女同互慰一区二区三区| 成人午夜精品在线| 亚洲影视在线观看| 日韩欧美中文字幕精品| 国产精品一品视频| 一区二区国产盗摄色噜噜| 91精品国产麻豆| 成人美女视频在线看| 天天影视涩香欲综合网| 久久久久久97三级| 91久久奴性调教| 麻豆91在线播放免费| 日韩毛片高清在线播放| 欧美一区二区三区在| 不卡大黄网站免费看| 日韩中文字幕区一区有砖一区 | 精品国产乱码久久久久久久久 | 欧美电影免费观看高清完整版在线 | 国产乱色国产精品免费视频| 亚洲视频精选在线| 日韩精品自拍偷拍| 99久久99久久综合| 日本亚洲视频在线| 亚洲视频一区二区在线观看| 91精品国产一区二区| 成人av电影在线网| 麻豆一区二区三区| 亚洲视频在线观看三级| 欧美精品一区二区三区蜜臀| 在线观看亚洲精品| 国产丶欧美丶日本不卡视频| 天天av天天翘天天综合网色鬼国产 | 久久久777精品电影网影网 | 久久嫩草精品久久久精品一| 欧美日韩中文国产| 99国内精品久久| 国产麻豆午夜三级精品|