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

📄 stress.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.modules;/*  	Tasks of Stress 		- accept conneciton of controller 		- open remote connections to given tested server 		- on successful connection, start playing a stream  */import java.util.ArrayList;import com.milgra.server.api.Client;import com.milgra.server.api.Stream;import com.milgra.server.api.Wrapper;import com.milgra.server.api.WrapperList;import com.milgra.server.api.InvokeEvent;import com.milgra.server.api.StatusEvent;import com.milgra.server.api.IApplication;import com.milgra.server.api.EventListener;public class Stress implements IModule{		// counter - remote player counter	// streamId - counterer for local stream creation		public int counter;	public int streamId;		// client - controller client	// testedUrl - url of tested server	public Client client;	public Client testedClient;	public Stream testedStream;	public String testedUrl;	// application - mother application	// players - remote clients	public IApplication application;		public ArrayList < Client > players;		/**	 * Stress constructor	 * @param applicationX mother application	 */		public Stress ( IApplication applicationX )	{				System.out.println( System.currentTimeMillis( ) + " SSLive.construct " );				// create		players = new ArrayList < Client > ( );		// set				counter = 0;		streamId = 0;		application = applicationX;			}		/**	 * Client entering point	 * @param clientX client	 * @param argumentsX arguments	 */		public void onEnter ( Client clientX , WrapperList argumentsX )	{		System.out.println( System.currentTimeMillis( ) + " SSLive.onEnter " + clientX + " " + argumentsX );				// create				EventListener invokeListener = new EventListener ( )		{							public void onEvent ( InvokeEvent eventX ) { onInvoke( eventX ); }						};		// set		testedUrl = argumentsX.getString( 1 );		client = clientX;				client.addInvokeEventListener( invokeListener );		client.accept( );				connectRemote( );			}		public void connectRemote ( )	{				System.out.println( System.currentTimeMillis( ) + " SSLive.connectRemote " );		client.call( "log" , new Wrapper( "Connecting to accepting application" ) );				EventListener statusListener = new EventListener ( )		{							public void onEvent ( StatusEvent eventX ) { onAcceptedConnection( eventX ); }						};				WrapperList arguments = new WrapperList( );		arguments.add( "StreamControl" );				testedClient = new Client( application );		testedClient.addStatusEventListener( statusListener );		testedClient.connect( "rtmp://" + testedUrl + "/milgraunit" , arguments );			}	/**	 * Status for accepted connection	 * @param eventX event	 */		public void onAcceptedConnection ( StatusEvent eventX )	{			System.out.println( System.currentTimeMillis( ) + " SSConnection.onAcceptedConnection " + eventX.code );				if ( eventX.code.equals( StatusEvent.SUCCESS ) ) 		{					client.call( "log" , new Wrapper( "Status: " + eventX.code + " application: " + eventX.info.getString( "application" ) ) );			client.call( "log" , new Wrapper( "You can start stress testing." ) );						testedStream = new Stream( "livestream1" , testedClient );			testedStream.publish( "livestream" , "live" );					}		else 		{			client.call( "log" , new Wrapper( "Status: " + eventX.code ) );			client.call( "log" , new Wrapper( "FAILED" ) );				}				testedClient.addStatusEventListener( null );			}		/**	 * Closes module	 **/		public void onLeave ( Client clientX ) 	{				System.out.println( System.currentTimeMillis( ) +  " Stress.onClose " );					}	/**	 * Invoke from controller	 * @param eventX event	 */		public void onInvoke ( InvokeEvent eventX )	{				System.out.println( System.currentTimeMillis( ) + " SSLive.onInvoke " + eventX.id );		if ( eventX.id.equals( "setSubscribers" ) ) setSubscribers( ( int ) eventX.arguments.getDouble( 0 ) );			}		/**	 * Status events from players	 * @param eventX event	 */		public void onStatus ( StatusEvent eventX )	{				System.out.println( System.currentTimeMillis( ) + " Stress.onPlayerStatus " + eventX.code );		if ( eventX.code.equals( StatusEvent.SUCCESS ) )		{						// play stream						Stream stream = new Stream( "stream" + ++ streamId , eventX.client );			stream.play( "livestream1" );					}	}		/**	 * Sets remote subscribers	 * @param counterX counter	 */		public void setSubscribers ( int counterX )	{				System.out.println( System.currentTimeMillis( ) + " Stress.setSubscribers " + counterX );				if ( counterX != counter )		{						counter = counterX;						// rearrange						int difference = counter - players.size( );						if ( difference > 0 ) addPlayers( difference );			if ( difference < 0 ) removePlayers( - difference );								}			}		/**	 * Adds new remote players	 * @param counterX counter	 */		public void addPlayers ( int counterX )	{				System.out.println( System.currentTimeMillis( ) + " Stress.addPlayers " + counterX );		EventListener statusListener = new EventListener ( )		{							public void onEvent ( StatusEvent eventX ) { onStatus( eventX ); }						};		for ( int index = 0 ; index < counterX ; index++ )		{						// create client						Client client = new Client( application );			client.addStatusEventListener( statusListener );			client.connect( "rtmp://" + testedUrl + "/milgraunit" , new Wrapper( "StreamControl" ) );						players.add( client );					}			}		/**	 * Removes players	 * @param counterX counter	 */		public void removePlayers ( int counterX )	{				System.out.println( System.currentTimeMillis( ) + " Stress.removePlayers " + counterX );		for ( int index = 0 ; index < counterX ; index++ )		{						Client client = players.remove( 0 );			client.detach( );					}			}}

⌨️ 快捷键说明

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