⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commandhandler.java

📁 一个用java编写的服务器,对于学习网络编程的人来说是个很好的例子
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
						shell.stopShell();
					} catch(Exception err) {
						logger.warning("Error stoping shell: "+err);
					}				
				}

				handler.sendClientMsg("+OK Done");
			} catch (AppException e) {
				handler.sendClientMsg("-ERR "+e);
			}
			return;
		} else if(cmd.equals("version")) {
			handler.sendClientMsg("+OK "+QuickServer.getVersion());
			return;
		} else if(cmd.equals("kill") || cmd.equals("exit")) /*v1.3,v1.3.2*/{
			StringBuffer errBuf = new StringBuffer();
			QuickServer controlServer = 
				(QuickServer) handler.getServer().getStoreObjects()[0];
			int exitCode = 0;

			if(param.length!=0) {
				try {
					exitCode = Integer.parseInt(param[0]);
				} catch(Exception nfe) {/*ignore*/}				
			}

			try	{				
				if(controlServer!=null && controlServer.isClosed()==false) {
					try {
						controlServer.stopServer();
					} catch(AppException ae) {
						errBuf.append(ae.toString());
					}
				}
				if(handler.getServer()!=null  && handler.getServer().isClosed()==false) {
					try {
						handler.getServer().stopServer();
					} catch(AppException ae) {
						errBuf.append(ae.toString());
					}					
				}

				QSAdminShell shell = QSAdminShell.getInstance(null, null);
				if(shell!=null) {
					try {
						shell.stopShell();
					} catch(Exception err) {
						errBuf.append(err.toString());
					}				
				}

				if(errBuf.length()==0)
					handler.sendClientMsg("+OK Done");
				else
					handler.sendClientMsg("+OK Done, Errors: "+errBuf.toString());
			} catch (Exception e) {
				handler.sendClientMsg("-ERR Exception : "+e+"\r\n"+errBuf.toString());
				if(exitCode==0) exitCode = 1;
			} finally {
				try {
					if(controlServer!=null)
						controlServer.closeAllPools();
					if(handler.getServer()!=null)
						handler.getServer().closeAllPools();
				} catch(Exception er) {
					logger.warning("Error closing pools: "+er);
				}
				System.exit(exitCode);
			}
			return;
		} else if(cmd.equals("memoryinfo")) { /*v1.3.2*/
			//Padding : Total:Used:Max
			float totalMemory = (float) runtime.totalMemory();
			float usedMemory = totalMemory - (float) runtime.freeMemory();			        
			float maxMemory = (float) runtime.maxMemory();
			handler.sendClientMsg("+OK "+totalMemory+":"+usedMemory+":"+maxMemory);
			return;
		} else if(cmd.equals("systeminfo")) { /*v1.4.5*/
			handler.sendClientMsg("+OK info follows");
			handler.sendClientMsg(MyString.getSystemInfo(target.getVersion()));			
			handler.sendClientMsg(".");
			return;
		} else if(param.length==0) {
			handler.sendClientMsg("-ERR Bad Command or No Param : ->"+cmd+"<-");
			return;
		}
		
		if(cmd.equals("start")) {
			try	{
				target.startServer();
				handler.sendClientMsg("+OK Server Started");
			} catch (AppException e) {
				handler.sendClientMsg("-ERR "+e);
			}
			return;
		} else if(cmd.equals("stop")) {
			try	{
				target.stopServer();
				handler.sendClientMsg("+OK Server Stopped");
			} catch (AppException e) {
				handler.sendClientMsg("-ERR "+e);
			}
			return;
		} else if(cmd.equals("restart")) {
			try	{
				target.stopServer();
				target.startServer();
				handler.sendClientMsg("+OK Server Restarted");
			} catch (AppException e) {
				handler.sendClientMsg("-ERR "+e);
			}
			return;
		} else if(cmd.equals("info")) {
			handler.sendClientMsg("+OK info follows");
			handler.sendClientMsg(""+target);
			handler.sendClientMsg("Running : "+!target.isClosed());
			handler.sendClientMsg("Max Client Allowed  : "+target.getMaxConnection() );
			handler.sendClientMsg("No Client Connected : "+target.getClientCount() );
			if(target.isRunningSecure()==true) {
				handler.sendClientMsg("Running in secure mode : "+
					target.getSecure().getProtocol() );
			} else {
				handler.sendClientMsg("Running in non-secure mode");
			}
			handler.sendClientMsg("Server Mode : "+target.getBasicConfig().getServerMode());
			handler.sendClientMsg(".");
			return;
		} else if(cmd.equals("noclient")) {
			handler.sendClientMsg("+OK "+target.getClientCount() );
			return;
		} else if(cmd.equals("running")) {
			handler.sendClientMsg("+OK "+!target.isClosed() );
			return;
		} else if(cmd.equals("suspendservice")) {
			handler.sendClientMsg("+OK "+target.suspendService() );
			return;
		} else if(cmd.equals("resumeservice")) {
			handler.sendClientMsg("+OK "+target.resumeService() );
			return;
		} else if(cmd.equals("client-thread-pool-info")) /*v1.3.2*/{
			temp.setLength(0);//used:idle
			if(PoolHelper.isPoolOpen(target.getClientPool().getObjectPool())==true) {
				temp.append(target.getClientPool().getNumActive());
				temp.append(':');
				temp.append(target.getClientPool().getNumIdle());
			} else {
				temp.append("0:0");
			}
			handler.sendClientMsg("+OK "+temp.toString() );
			return;
		} else if(cmd.equals("client-thread-pool-dump")) /*v1.4.5*/{
			if(PoolHelper.isPoolOpen(target.getClientPool().getObjectPool())==true) {
				handler.sendClientMsg("+OK info follows");
				ClientThread ct = null;
				synchronized(target.getClientPool().getObjectToSynchronize()) {
					Iterator iterator = target.getClientPool().getAllClientThread();
					while(iterator.hasNext()) {
						ct = (ClientThread)iterator.next();
						handler.sendClientMsg(ct.toString());
					}
				}
				handler.sendClientMsg(".");
			} else {
				handler.sendClientMsg("-ERR Pool Closed");
			}
			return;
		} else if(cmd.equals("client-handler-pool-dump")) /*v1.4.6*/{
			
			ObjectPool objectPool = target.getClientHandlerPool();

			if(PoolHelper.isPoolOpen(objectPool)==true) {
				if(QSObjectPool.class.isInstance(objectPool)==false) {
					handler.sendClientMsg("-ERR System Error!");
				}

				ClientIdentifier clientIdentifier = target.getClientIdentifier();
				ClientHandler foundClientHandler = null;
				synchronized(clientIdentifier.getObjectToSynchronize()) {	
					Iterator iterator = clientIdentifier.findAllClient();
					handler.sendClientMsg("+OK info follows");
					while(iterator.hasNext()) {
						foundClientHandler = (ClientHandler) iterator.next();
						handler.sendClientMsg(foundClientHandler.info());
					}
				}
				handler.sendClientMsg(".");
			} else {
				handler.sendClientMsg("-ERR Pool Closed");
			}
			return;
		} else if(cmd.equals("client-data-pool-info")) /*v1.3.2*/{
			temp.setLength(0);//used:idle
			if(target.getClientDataPool()!=null) {
				if(PoolHelper.isPoolOpen(target.getClientDataPool())==true) {
					temp.append(target.getClientDataPool().getNumActive());
					temp.append(':');
					temp.append(target.getClientDataPool().getNumIdle());
					handler.sendClientMsg("+OK "+temp.toString() );
				} else {
					handler.sendClientMsg("-ERR Client Data Pool Closed");
				}
			} else {
				handler.sendClientMsg("-ERR No Client Data Pool");
			}
			return;
		} if(cmd.equals("byte-buffer-pool-info")) /*v1.4.6*/{
			temp.setLength(0);//used:idle
			if(target.getByteBufferPool()!=null) {
				if(PoolHelper.isPoolOpen(target.getByteBufferPool())==true) {
					temp.append(target.getByteBufferPool().getNumActive());
					temp.append(':');
					temp.append(target.getByteBufferPool().getNumIdle());
					handler.sendClientMsg("+OK "+temp.toString() );
				} else {
					handler.sendClientMsg("-ERR ByteBuffer Pool Closed");
				}
			} else {
				handler.sendClientMsg("-ERR No ByteBuffer Pool");
			}
			return;
		} else if(cmd.equals("all-pool-info")) /*v1.4.5*/{
			handler.sendClientMsg("+OK info follows");
			temp.setLength(0);//used:idle
			
			if(PoolHelper.isPoolOpen(target.getClientPool().getObjectPool())==true) {
				temp.append("Client Thread Pool - ");
				temp.append("Num Active: ");
				temp.append(target.getClientPool().getNumActive());
				temp.append(", Num Idle: ");
				temp.append(target.getClientPool().getNumIdle());
				temp.append(", Max Idle: ");
				temp.append(target.getClientPool().getPoolConfig().getMaxIdle());
				temp.append(", Max Active: ");
				temp.append(target.getClientPool().getPoolConfig().getMaxActive());				
			} else {
				temp.append("Byte Buffer Pool - Closed");
			}
			handler.sendClientMsg(temp.toString());
			temp.setLength(0);

			if(PoolHelper.isPoolOpen(target.getClientHandlerPool())==true) {
				temp.append("Client Handler Pool - ");
				temp.append("Num Active: ");
				temp.append(target.getClientHandlerPool().getNumActive());
				temp.append(", Num Idle: ");
				temp.append(target.getClientHandlerPool().getNumIdle());
				temp.append(", Max Idle: ");
				temp.append(target.getBasicConfig().getObjectPoolConfig().getClientHandlerObjectPoolConfig().getMaxIdle());
				temp.append(", Max Active: ");
				temp.append(target.getBasicConfig().getObjectPoolConfig().getClientHandlerObjectPoolConfig().getMaxActive());
			} else {
				temp.append("Client Handler Pool - Closed");
			}
			handler.sendClientMsg(temp.toString());
			temp.setLength(0);

			if(target.getByteBufferPool()!=null) {
				if(PoolHelper.isPoolOpen(target.getByteBufferPool())==true) {
					temp.append("ByteBuffer Pool - ");
					temp.append("Num Active: ");
					temp.append(target.getByteBufferPool().getNumActive());
					temp.append(", Num Idle: ");
					temp.append(target.getByteBufferPool().getNumIdle());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -