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

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

?? controller.java

?? 簡單的分布式算法
?? JAVA
字號:
/* ***************************************************************************** * $Id: Controller.java,v 1.4 2003/05/01 23:57:34 jheiss Exp $ ***************************************************************************** * This class allows runtime control of the load balancer ***************************************************************************** * Copyright 2003 Jason Heiss *  * This file is part of Distributor. *  * Distributor 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. *  * Distributor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with Distributor; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA ***************************************************************************** */package oss.distributor;import java.io.*;import java.net.*;import java.util.List;import java.util.LinkedList;import java.util.Iterator;import java.util.StringTokenizer;import java.util.logging.Logger;import java.util.logging.Level;import java.text.ParseException;class Controller implements Runnable{	Distributor distributor;	Logger logger;	int port;	List conns;	Thread thread;	ServerSocket controllerServer;	protected Controller(Distributor distributor, int port)	{		this.distributor = distributor;		logger = distributor.getLogger();		this.port = port;		// Use a linked list so we can remove dead connections in the		// middle of the list easily.		conns = new LinkedList();		// Create a thread for ourselves and start it		thread = new Thread(this, getClass().getName());		thread.start();	}	public void run()	{		try		{			controllerServer = new ServerSocket();			controllerServer.bind(new InetSocketAddress("127.0.0.1", port));		}		catch (IOException e)		{			logger.warning(				"Error binding controller socket: " + e.getMessage());			return;		}		while(true)		{			try			{				Socket socket = controllerServer.accept();				logger.fine("Control connection from " + socket);				ControllerConnection conn =					new ControllerConnection(socket, distributor);				conns.add(conn);			}			catch (IOException e)			{				logger.warning("Error accepting connection to controller: " +					e.getMessage());				shutdown();				return;			}			removeDeadConnections();		}	}	private void shutdown()	{		try		{			controllerServer.close();		}		catch (IOException e)		{			logger.warning(				"Error closing controller socket: " + e.getMessage());		}		ControllerConnection c;		Iterator i = conns.iterator();		while (i.hasNext())		{			c = (ControllerConnection) i.next();			c.close();			i.remove();		}	}	private void removeDeadConnections()	{		ControllerConnection c;		Iterator i = conns.iterator();		while (i.hasNext())		{			c = (ControllerConnection) i.next();			if (c.isClosed())			{				logger.finest("Removing closed connection " + c);				i.remove();			}		}	}}class ControllerConnection implements Runnable{	Socket socket;	Distributor distributor;	Logger logger;	BufferedReader in;	PrintWriter out;	Thread thread;	boolean closed = false;	protected ControllerConnection(		Socket socket, Distributor distributor) throws IOException	{		this.socket = socket;		this.distributor = distributor;		logger = distributor.getLogger();		// Good thing we don't care about speed...		in =			new BufferedReader(				new InputStreamReader(					socket.getInputStream()));		out = new PrintWriter(socket.getOutputStream(), true);		// Create a thread for ourselves and start it		thread = new Thread(this, getClass().getName());		thread.start();	}	public void run()	{		try		{			String line;			StringTokenizer st;			String command;			while(! closed)			{				// Print a prompt				out.print("distributor> ");				out.flush();				// Read a command				line = in.readLine();				logger.finest("Read '" + line + "' from " + socket);				if (line == null)				{					logger.fine("Control connection " + socket + " closed");					close();					return;				}								st = new StringTokenizer(line);				command = st.nextToken();				logger.finer("Read '" + command + "' command from " + socket);				if (command.equals("stats"))				{					stats(st);				}				else if (command.equals("threads"))				{					threads(st);				}				else if (command.equals("add"))				{					addTarget(st);				}				else if (command.equals("remove"))				{					removeTarget(st);				}				else if (command.equals("addgroup"))				{					addTargetGroup(st);				}				else if (command.equals("removegroup"))				{					removeTargetGroup(st);				}				else if (command.equals("disable"))				{					disableTarget(st);				}				else if (command.equals("enable"))				{					enableTarget(st);				}				else if (command.equals("loglevel"))				{					setLogLevel(st);				}				else if (command.equals("help"))				{					help(st);				}				else if (command.equals("quit"))				{					close();					return;				}				else				{					out.println("Unknown command:  " + command);					out.println("Try 'help' for a list of commands");				}			}		}		catch (IOException e)		{			logger.warning(				"Error while communicating with controller client: " +				e.getMessage());			close();			return;		}	}	protected void help(StringTokenizer st)	{		out.println("Commands:");		out.println("stats");		out.println("threads");		out.println("add");		out.println("remove");		out.println("addgroup");		out.println("removegroup");		out.println("disable");		out.println("enable");		out.println("loglevel");		out.println("help");		out.println("quit");	}	protected void stats(StringTokenizer st)	{		List targetGroups = distributor.getTargetGroups();		synchronized (targetGroups)		{			List targets;			Target target;			Iterator targetIter;			int tgCounter = 0;			Iterator tgIter = targetGroups.iterator();			while (tgIter.hasNext())			{				out.println("Target group " + tgCounter + ":");				tgCounter++;				targets = (List) tgIter.next();				synchronized (targets)				{					targetIter = targets.iterator();					while (targetIter.hasNext())					{						target = (Target) targetIter.next();						out.println("  " + target);					}				}			}		}	}	/*	 * Print a list of the threads in Distributor	 */	protected void threads(StringTokenizer st)	{		Thread[] tarray = new Thread[Thread.activeCount()];		Thread.enumerate(tarray);		for (int i=0 ; i<tarray.length ; i++)		{			out.println(tarray[i]);		}	}	protected void addTarget(StringTokenizer st)	{		if (st.countTokens() != 3)		{			out.println("Usage: add <target group> <hostname> <port>");			return;		}		int tgIndex;		InetAddress addr;		int port;		Target newTarget;		try		{			tgIndex = Integer.parseInt(st.nextToken());			addr = InetAddress.getByName(st.nextToken());			port = Integer.parseInt(st.nextToken());			newTarget = new Target(				distributor, addr, port,				distributor.getConnectionFailureLimit(),				distributor.getTerminate());		}		catch (UnknownHostException e)		{			out.println("Host not found:  " + e.getMessage());			return;		}		catch (NumberFormatException e)		{			out.println("Target group and port must be integers");			return;		}		List targetGroups = distributor.getTargetGroups();		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex >= targetGroups.size())			{				out.println("Invalid target group");				return;			}			Iterator tgIter = targetGroups.iterator();			int tgCounter = 0;			while (tgIter.hasNext())			{				if (tgCounter == tgIndex)				{					List targets = (List) tgIter.next();					targets.add(newTarget);					out.println("New target added");					break;				}				tgCounter++;			}		}	}	protected void removeTarget(StringTokenizer st)	{		if (st.countTokens() != 3)		{			out.println("Usage: remove <target group> <hostname> <port>");			return;		}		int tgIndex;		InetAddress addr;		int port;		try		{			tgIndex = Integer.parseInt(st.nextToken());			addr = InetAddress.getByName(st.nextToken());			port = Integer.parseInt(st.nextToken());		}		catch (UnknownHostException e)		{			out.println("Host not found:  " + e.getMessage());			return;		}		catch (NumberFormatException e)		{			out.println("Target group and port must be integers");			return;		}		List targetGroups = distributor.getTargetGroups();		List targets = null;		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex >= targetGroups.size())			{				out.println("Invalid target group");				return;			}			Iterator tgIter = targetGroups.iterator();			int tgCounter = 0;			while (tgIter.hasNext())			{				if (tgCounter == tgIndex)				{					targets = (List) tgIter.next();					break;				}				tgCounter++;			}		}		boolean targetFound = false;		Target target = null;		synchronized (targets)		{			Iterator targetIter = targets.iterator();			while (targetIter.hasNext())			{				target = (Target) targetIter.next();				if (target.getInetAddress().equals(addr) &&					target.getPort() == port)				{					targetIter.remove();					targetFound = true;					break;				}			}		}		if (targetFound)		{			target.terminateAll();			out.println("Target removed");		}		else		{			out.println("No matching target found");		}	}	protected void addTargetGroup(StringTokenizer st)	{		if (st.countTokens() != 1)		{			out.println("Usage: addgroup <target group>");			return;		}		int tgIndex;		try		{			tgIndex = Integer.parseInt(st.nextToken());		}		catch (NumberFormatException e)		{			out.println("Target group must be an integer");			return;		}		List targetGroups = distributor.getTargetGroups();		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex > targetGroups.size())			{				out.println("Invalid target group");				return;			}			targetGroups.add(tgIndex, new LinkedList());			out.println("New target group added at position " + tgIndex);		}	}	protected void removeTargetGroup(StringTokenizer st)	{		if (st.countTokens() != 1)		{			out.println("Usage: removegroup <target group>");			return;		}		int tgIndex;		try		{			tgIndex = Integer.parseInt(st.nextToken());		}		catch (NumberFormatException e)		{			out.println("Target group must be an integer");			return;		}		List targetGroups = distributor.getTargetGroups();		// Remove the target group from the list of target groups		List targets;		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex >= targetGroups.size())			{				out.println("Invalid target group");				return;			}			targets = (List) targetGroups.remove(tgIndex);		}		// Shutdown the connections to each target in the target group		synchronized (targets)		{			Iterator targetIter = targets.iterator();			Target target;			while (targetIter.hasNext())			{				target = (Target) targetIter.next();				target.terminateAll();			}		}		out.println("Target group at position " + tgIndex + " removed");	}	protected void disableTarget(StringTokenizer st)	{		if (st.countTokens() != 3)		{			out.println("Usage: disable <target group> <hostname> <port>");			return;		}		int tgIndex;		InetAddress addr;		int port;		try		{			tgIndex = Integer.parseInt(st.nextToken());			addr = InetAddress.getByName(st.nextToken());			port = Integer.parseInt(st.nextToken());		}		catch (UnknownHostException e)		{			out.println("Host not found:  " + e.getMessage());			return;		}		catch (NumberFormatException e)		{			out.println("Target group and port must be integers");			return;		}		List targetGroups = distributor.getTargetGroups();		List targets = null;		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex >= targetGroups.size())			{				out.println("Invalid target group");				return;			}			Iterator tgIter = targetGroups.iterator();			int tgCounter = 0;			while (tgIter.hasNext())			{				if (tgCounter == tgIndex)				{					targets = (List) tgIter.next();					break;				}				tgCounter++;			}		}		boolean targetFound = false;		synchronized (targets)		{			Iterator targetIter = targets.iterator();			Target target;			while (targetIter.hasNext())			{				target = (Target) targetIter.next();				if (target.getInetAddress().equals(addr) &&					target.getPort() == port)				{					target.disable();					targetFound = true;					out.println("Target disabled");					break;				}			}		}		if (!targetFound)		{			out.println("No matching target found");		}	}	protected void enableTarget(StringTokenizer st)	{		if (st.countTokens() != 3)		{			out.println("Usage: enable <target group> <hostname> <port>");			return;		}		int tgIndex;		InetAddress addr;		int port;		try		{			tgIndex = Integer.parseInt(st.nextToken());			addr = InetAddress.getByName(st.nextToken());			port = Integer.parseInt(st.nextToken());		}		catch (UnknownHostException e)		{			out.println("Host not found:  " + e.getMessage());			return;		}		catch (NumberFormatException e)		{			out.println("Target group and port must be integers");			return;		}		List targetGroups = distributor.getTargetGroups();		List targets = null;		synchronized (targetGroups)		{			if (tgIndex < 0 || tgIndex >= targetGroups.size())			{				out.println("Invalid target group");				return;			}			Iterator tgIter = targetGroups.iterator();			int tgCounter = 0;			while (tgIter.hasNext())			{				if (tgCounter == tgIndex)				{					targets = (List) tgIter.next();					break;				}				tgCounter++;			}		}		boolean targetFound = false;		synchronized (targets)		{			Iterator targetIter = targets.iterator();			Target target;			while (targetIter.hasNext())			{				target = (Target) targetIter.next();				if (target.getInetAddress().equals(addr) &&					target.getPort() == port)				{					target.enable();					targetFound = true;					out.println("Target enabled");					break;				}			}		}		if (!targetFound)		{			out.println("No matching target found");		}	}	protected void setLogLevel(StringTokenizer st)	{		if (st.countTokens() != 1)		{			out.println("Usage: loglevel " +				"off|severe|warning|info|config|fine|finer|finest|all");			return;		}		Level newLevel;		String levelName = st.nextToken();		try		{			newLevel = Distributor.parseLogLevel(levelName);		}		catch (ParseException e)		{			out.println("Unrecognized log level");			return;		}		logger.setLevel(newLevel);	}	protected boolean isClosed()	{		return closed;	}	protected void close()	{		try		{			socket.close();		}		catch (IOException e)		{			logger.warning(				"Error closing connection to controller client: " +				e.getMessage());		}		closed = true;	}	public String toString()	{		return("ControllerConnection from " + socket);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区二区色综合| 国产精品国产自产拍高清av| 欧美一区二区三区四区高清| 91麻豆精品久久久久蜜臀| 欧美疯狂做受xxxx富婆| 欧美一区二区免费视频| 久久蜜桃一区二区| 日韩视频123| 中文字幕乱码一区二区免费| 亚洲免费观看视频| 午夜久久久久久电影| 偷偷要91色婷婷| 狠狠色狠狠色合久久伊人| 国产a级毛片一区| 91在线视频免费观看| 欧美亚洲图片小说| 精品国产电影一区二区| 久久日韩精品一区二区五区| 欧美韩国日本不卡| 亚洲天堂成人网| 午夜精品久久久久久不卡8050| 欧美aaa在线| 国产大片一区二区| 色激情天天射综合网| 日韩一区二区三区三四区视频在线观看 | 亚洲国产成人91porn| 美腿丝袜在线亚洲一区 | 色域天天综合网| 欧美精品免费视频| 国产欧美一区二区三区鸳鸯浴| 伊人开心综合网| 麻豆精品视频在线| 99精品久久只有精品| 4438x亚洲最大成人网| 精品国产露脸精彩对白| 中文字幕一区二区不卡| 日韩在线一二三区| 成人黄色网址在线观看| 精品视频全国免费看| 国产亚洲欧洲一区高清在线观看| 一区二区三区四区五区视频在线观看| 日韩av电影天堂| www.成人网.com| 日韩亚洲欧美成人一区| 成人欧美一区二区三区白人| 麻豆精品在线观看| 色哟哟一区二区在线观看| 日韩精品中文字幕一区二区三区 | 亚洲sss视频在线视频| 国产福利一区二区三区视频 | 久久综合久久综合九色| 一区二区三区精品在线| 国产成人亚洲精品青草天美| 欧美中文字幕一区| 久久日韩粉嫩一区二区三区| 亚欧色一区w666天堂| 成人av在线网| 精品1区2区在线观看| 亚洲一区二区在线视频| 国产精品18久久久| 欧美一级片在线看| 亚洲一区在线视频| 99视频国产精品| 日韩欧美一级二级三级久久久| 亚洲综合在线电影| 99这里只有久久精品视频| 精品99一区二区三区| 日本特黄久久久高潮| 在线观看日韩av先锋影音电影院| 国产精品久久三区| 成人性生交大片免费看在线播放| 欧美日韩免费不卡视频一区二区三区| 国产精品乱码人人做人人爱| 另类小说视频一区二区| 91在线视频在线| 国产精品不卡一区二区三区| 国产高清无密码一区二区三区| 日韩三级视频中文字幕| 亚洲精品免费在线| 成年人午夜久久久| 中文在线一区二区| 国产精品一区二区三区99| 欧美嫩在线观看| 亚洲国产成人va在线观看天堂| 99re这里只有精品视频首页| 亚洲国产电影在线观看| 国产精品一区二区三区网站| 欧美精品一区在线观看| 狠狠色2019综合网| 精品国产乱码久久久久久老虎| 亚洲精品成人a在线观看| www.成人网.com| 亚洲免费观看高清完整版在线观看熊 | 日本精品免费观看高清观看| 亚洲免费成人av| 欧美亚洲日本国产| 美女视频一区二区| 国产网红主播福利一区二区| www..com久久爱| 亚洲一区中文日韩| 欧美一区二区二区| 国产精品一区二区三区乱码| 亚洲婷婷国产精品电影人久久| 色成人在线视频| 免费人成黄页网站在线一区二区| xf在线a精品一区二区视频网站| 成人激情午夜影院| 亚洲午夜私人影院| 精品国产乱码久久久久久浪潮 | 中文字幕亚洲视频| 欧美日本一道本| 国产麻豆欧美日韩一区| 亚洲免费观看在线观看| 欧美一级欧美一级在线播放| 丁香激情综合五月| 亚洲宅男天堂在线观看无病毒| 欧美一级久久久| www.66久久| 久久国产乱子精品免费女| 国产精品美日韩| 91麻豆精品国产自产在线| 国产精品自在欧美一区| 一区二区三区成人在线视频| 日韩欧美国产成人一区二区| 91论坛在线播放| 久久av老司机精品网站导航| 亚洲欧美视频一区| 精品国一区二区三区| 91麻豆6部合集magnet| 久88久久88久久久| 一区二区三区四区在线| 久久先锋影音av| 欧美日韩精品一区二区在线播放| 高清不卡在线观看| 日韩精品免费视频人成| 亚洲啪啪综合av一区二区三区| 欧美成人精品福利| 91久久精品一区二区| 国产一区二区在线视频| 无吗不卡中文字幕| 中文字幕一区二区在线观看| 欧美mv日韩mv亚洲| 欧美日韩在线免费视频| 成人免费看视频| 久久97超碰国产精品超碰| 亚洲一区二区三区小说| 国产欧美日韩激情| 日韩欧美国产三级| 欧美剧情片在线观看| 色999日韩国产欧美一区二区| 日本免费在线视频不卡一不卡二| ...xxx性欧美| 国产偷国产偷亚洲高清人白洁| 欧美特级限制片免费在线观看| av在线不卡电影| 国产精品一级在线| 麻豆国产欧美日韩综合精品二区| 亚洲一区二区三区四区在线| 国产精品久久久久永久免费观看| 日韩欧美高清一区| 日韩亚洲欧美在线观看| 欧美日韩另类国产亚洲欧美一级| 色悠悠亚洲一区二区| 成人aa视频在线观看| 国产一区二区三区久久久| 亚洲不卡av一区二区三区| 亚洲一级二级在线| 亚洲精品视频观看| 亚洲欧洲精品天堂一级| 国产精品免费人成网站| 久久久久久久久久久久久女国产乱| 欧美一二区视频| 67194成人在线观看| 91麻豆精品国产| 在线播放中文字幕一区| 欧美性猛片aaaaaaa做受| 在线亚洲免费视频| 在线视频一区二区三| 色婷婷久久综合| 色婷婷av一区| 一本久久综合亚洲鲁鲁五月天| av男人天堂一区| 成人美女视频在线看| 成人教育av在线| 色综合天天综合色综合av | 1区2区3区精品视频| 国产精品欧美综合在线| 中文字幕亚洲在| 一区二区高清在线| 午夜精品免费在线观看| 亚洲成人在线观看视频| 午夜国产精品一区| 日本特黄久久久高潮| 久久精品国产99| 国产精品综合网| 99久久免费精品高清特色大片| www.亚洲精品| 欧美在线小视频| 欧美另类videos死尸| 日韩一区二区在线观看视频 |