/*
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;
/**
CSConnection class
@mail milgra@milgra.com
@author Milan Toth
@version 20080316
Tasks of CSConnection
- accept or reject connecting client to test outgoing staus events
**/
import com.milgra.server.api.Client;
import com.milgra.server.api.Wrapper;
import com.milgra.server.api.WrapperList;
import com.milgra.server.api.InvokeEvent;
import com.milgra.server.api.IApplication;
import com.milgra.server.api.EventListener;
public class CSConnection implements IModule
{
/**
* CSConnection constructor
* @param applicationX
*/
public CSConnection ( IApplication applicationX )
{
System.out.println( System.currentTimeMillis( ) + " CSConnection.construct " + applicationX );
}
/**
* Client entering point
* @param clientX client
* @param argumentsX arguments
*/
public void onEnter ( Client clientX , WrapperList argumentsX )
{
System.out.println( System.currentTimeMillis( ) + " CSConnection.onEnter " + clientX + " " +argumentsX );
// get mode
String mode = argumentsX.getString( 1 );
// reject
if ( mode.equals( "reject" ) ) clientX.reject( new Wrapper( "Requested rejection" ) );
// accept
if ( mode.equals( "accept" ) )
{
// create invoke listener
EventListener invokeListener = new EventListener ( )
{
public void onEvent ( InvokeEvent eventX ) { onInvoke( eventX ); }
};
// init
clientX.addInvokeEventListener( invokeListener );
clientX.accept( new Wrapper( "Requested acception" ) );
}
}
/**
* Closes module
**/
public void onLeave ( Client clientX )
{
System.out.println( System.currentTimeMillis( ) + " CSConnection.onLeave " );
}
/**
* Invoke event listener
* @param eventX invoke event
*/
public void onInvoke ( InvokeEvent eventX )
{
System.out.println( System.currentTimeMillis( ) + " CSConnection.onInvoke " + eventX.id );
if ( eventX.id.equals( "disconnect" ) ) eventX.client.detach( );
}
}