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

📄 application.java

📁 MilGra0.8b for java media server
💻 JAVA
字号:
/*	Milenia Grafter Server		Copyright (c) 2007-2008 by Milan Toth. All rights reserved.		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.		This program 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 this program; if not, write to the Free Software	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.*/package application;/**		Application class		@mail milgra@milgra.com	@author Milan Toth	@version 20080316		Tasks of Admin Application 			- collect io information and send it tho admin clients		- let the admins do application refresh/load/reload**/import java.util.HashMap;import java.util.ArrayList;import com.milgra.server.Server;import com.milgra.server.api.Timer;import com.milgra.server.api.Client;import com.milgra.server.api.Wrapper;import com.milgra.server.api.LogWriter;import com.milgra.server.api.WrapperMap;import com.milgra.server.api.WrapperList;import com.milgra.server.api.IApplication;import com.milgra.server.api.EventListener;public class Application implements IApplication{		// filename constants		public static final String CONFIGFILE = "admin" + System.getProperty( "file.separator" ) + "config.xml"; 	public static final String ACCESSFILE = "admin" + System.getProperty( "file.separator" ) + "access.xml"; 	public static final String GRAPHSFILE = "admin" + System.getProperty( "file.separator" ) + "graphs.xml";		// timer - timer for periodic data collection	// admins - container for admin clients	public Timer timer;	public EventListener timerListener;	public HashMap < Long , AdminController > admins;		// accessLog - flag indicating access logging	// graphsLog - flag indicating graphs logging	public boolean accessLog;	public boolean graphsLog;		// graphsLogger - graps log writer	// accessLogger - access log writer		public LogWriter graphsLogger;	public LogWriter accessLogger;		// reader - config xml reader	// writer - config xml writer		public ConfigReader reader;	public ConfigWriter writer;		/**	 * Application constructor	 */	public Application ( ) 	{				System.out.println( System.currentTimeMillis() + " MilGra Admin 1.0" );				// create				writer = new ConfigWriter( CONFIGFILE );		reader = new ConfigReader( CONFIGFILE );		accessLogger = new LogWriter( ACCESSFILE );		graphsLogger = new LogWriter( GRAPHSFILE );				admins = new HashMap < Long , AdminController > ( );		timerListener = new EventListener ( ) { public void onEvent ( ) { update( ); } };		timer = new Timer( 2000 , timerListener );						// set				accessLogger.active = reader.accessLogging;		graphsLogger.active = reader.graphsLogging;				// start		accessLogger.log( "Milenia Grafter Admin startup on " + System.currentTimeMillis( ) );		graphsLogger.log( "Time" + "\t" + 						  "Band in Mbits/s" + "\t" + "Band out Mbits/s" + "\t" +						  "Clients" + "\t" + "Streams" + "\t" +						  "Socket ex." + "\t" + "Stream ex." + "\t" + "Client ex." + "\t" +						  "Socket th." + "\t" + "Stream th." + "\t" + "Client th." );		// start refresh				timer.start( );	}		public void onStart ( String nameX )	{			}		/**	 * Closes Application	 */		public void onClose ( )	{				// System.out.println( System.currentTimeMillis( ) + " MilGraAdmin Application.onClose" );		accessLogger.log( "Milenia Grafter Admin close on " + System.currentTimeMillis( ) );				timer.finish( );		timer = null;						accessLogger.close( );		graphsLogger.close( );			}		/**	 * Client entering point 	 * @param clientX client	 * @param arguments arguments	 */		public void onEnter ( Client clientX , WrapperList argumentsX )	{				// System.out.println( System.currentTimeMillis( ) + " MilGraAdmin Application.onAdmin " + clientX.getIp( ) );		accessLogger.log( "Milenia Grafter Admin enter on " + System.currentTimeMillis() + " ip: " + clientX.getIp( ) );				// ip check				boolean valid = false;		if ( !reader.hasIp( ) ) valid = true;		else if ( reader.hasIp( clientX.getIp( ) ) ) valid = true;				if ( valid )		{						// password check			String user = argumentsX.getString( 0 );			String pass = argumentsX.getString( 1 );			if ( reader.userName.equals( user ) && reader.passWord.equals( pass ) ) 			{								// create controller								AdminController admin = new AdminController ( clientX , this );				admins.put( clientX.getId( ) , admin );								accessLogger.log( "Access Granted" );				clientX.accept( new Wrapper( "Access granted" ) );							}			else 			{							accessLogger.log( "Access denied." );				clientX.reject( new Wrapper( "Access denied" ) );							}					}			}		/**	 * Client leaving point 	 * @param clientX client	 */		public void onLeave ( Client clientX )	{				// System.out.println( System.currentTimeMillis() + " MilGraAdmin Application.onLeave " + clientX.getId( ) );		accessLogger.log( "Milenia Grafter Admin leave on " + System.currentTimeMillis() + " ip: " + clientX.getId( ) );				admins.remove( clientX.getId( ) );			}								/**	 * Invokes application load	 * @param applicationIdX	 */		public void loadApplication ( String applicationIdX )	{				// System.out.println( System.currentTimeMillis() + " MilGraAdmin Application.loadApplication " + applicationIdX );		Server.getApplication( applicationIdX );			}		/**	 * Invokes applicatoin unload	 * @param applicationIdX	 */		public void unloadApplication ( String applicationIdX )	{		// System.out.println( System.currentTimeMillis() + " MilGraAdmin Application.unloadApplication " + applicationIdX );		Server.unloadApplication( applicationIdX );	}		/**	 * Invokes applications refresh	 */		public void refreshApplications ( )	{				// System.out.println( System.currentTimeMillis() + " MilGraAdmin Application.refreshApplications" );		Server.readApplications( );			}		/**	 * Collects application info	 */		public void update ( ) 	{				// System.out.println( System.currentTimeMillis( ) + " Server.collectApplications" );				// create				int clients = 0;		int streamsIn = 0;		int streamsOut = 0;				int allBandIn = 0;		int allBandOut = 0;				int clientTime = 0;		int socketTime = 0;		int streamTime = 0;				int clientCount = 0;		int socketCount = 0;		int streamCount = 0;				WrapperMap appData = new WrapperMap( );		WrapperMap graphData = new WrapperMap ( );		WrapperList arguments = new WrapperList( );				// collect application data					synchronized ( Server.clients )		{			for ( String id : Server.states.keySet( ) )			{									String state = Server.states.get( id ) == true ? "running" : "stopped";				WrapperMap appInfo = new WrapperMap( );									appInfo.put( "id" , id );				appInfo.put( "state" , state );				appInfo.put( "bandin" , 0 );				appInfo.put( "bandout" , 0 );				appInfo.put( "clients" , 0 );				if ( Server.clients.containsKey( id ) ) 				{										ArrayList < Client > clientList = Server.clients.get( id );										int bandIn = 0;					int bandOut = 0;															for ( Client client : clientList )					{							bandIn += client.getBandIn( );						bandOut += client.getBandOut( );						clients ++;											}										appInfo.put( "bandin" , bandIn );					appInfo.put( "bandout" , bandOut );					appInfo.put( "clients" , clientList.size( ) );										allBandIn += bandIn;					allBandOut += bandOut;									}				appData.put( id , appInfo );			}					}				// collect io data				if ( Server.pools.containsKey( "socket" ) ) socketTime = Server.pools.get( "socket" ).getDelay( );		if ( Server.pools.containsKey( "client" ) ) clientTime = Server.pools.get( "client" ).getDelay( );		if ( Server.pools.containsKey( "stream" ) ) streamTime = Server.pools.get( "stream" ).getDelay( );				if ( Server.pools.containsKey( "socket" ) ) socketCount = Server.pools.get( "socket" ).getCount( );		if ( Server.pools.containsKey( "client" ) ) clientCount = Server.pools.get( "client" ).getCount( );		if ( Server.pools.containsKey( "stream" ) ) streamCount = Server.pools.get( "stream" ).getCount( );				// stream data		streamsIn = Server.routers.size( );		streamsOut = Server.players.size( );						graphData.put( "bandin" , allBandIn );		graphData.put( "bandout" , allBandOut );		graphData.put( "clients" , clients );		graphData.put( "streamsin" , streamsIn );		graphData.put( "streamsout" , streamsOut );			graphData.put( "sockettime" , socketTime );		graphData.put( "streamtime" , streamTime );		graphData.put( "clienttime" , clientTime );				graphData.put( "socketcount" , socketCount );		graphData.put( "streamcount" , streamCount );		graphData.put( "clientcount" , clientCount );				// add to arguments				arguments.add( appData );		arguments.add( graphData );				// send to admins				for ( AdminController admin : admins.values( ) ) admin.updateData( arguments );				// log				graphsLogger.log( System.currentTimeMillis( ) + "\t" + 						  allBandIn + "\t" + allBandOut + "\t" + 						  clients + "\t" + streamsIn + "\t" + streamsOut + "\t" + 						  socketTime + "\t" + streamTime + "\t" + clientTime + "\t" +						  socketCount + "\t" + streamCount + "\t" + clientCount );	}	}

⌨️ 快捷键说明

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