You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Kevin Smeltzer (JIRA)" <ji...@apache.org> on 2007/07/25 16:20:31 UTC

[jira] Created: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
-----------------------------------------------------------------------------------------------------------------------------------

                 Key: DIRMINA-404
                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
             Project: MINA
          Issue Type: Bug
    Affects Versions: 1.1.1
         Environment: Windows XP
            Reporter: Kevin Smeltzer
            Priority: Trivial


// CLIENT MODULE

public class bgMinaClient extends IoHandlerAdapter
{
    public static final int CONNECT_TIMEOUT = 10000;
    private String host;
    private int port;
    private String tokenizer;
    private SocketConnector connector;
    private IoSession session;
    private bgClientListener clientListener;
    private ConnectFuture connectFuture;
    
    public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
    	
        this.host = host;
        this.port = port;
        this.tokenizer = tokenizer;
        this.clientListener = clientListener;
        connector = new SocketConnector();
        connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
        
    }

    public void connect() {
    	
    	// try to connect 5 times before giving up
    	int attempts = 5;
    	do {
	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
    	    connectFuture.join(CONNECT_TIMEOUT);
	        try
    	    {
        	
            	session = connectFuture.getSession();
            
        	}
        	catch (RuntimeIOException e)
        	{
        	
	            clientListener.onException( e );
            
	        }
	        attempts--;
	        
    	} while ( session == null && attempts > 0);
			
    }

    public void disconnect() {
    	
        if (session != null)
        {
        	
            session.close().join(CONNECT_TIMEOUT);
            session = null;
            
        }
    }

    public void sessionOpened(IoSession session) throws Exception {
    	
    	this.session = session;
		clientListener.doConnect( session );
      
    }

    public void sessionClosed(IoSession session) throws Exception {
    	
        clientListener.doDisconnect();
        
    }

    public void sendRequest( bgClientRequest clientRequest ) {
        
        if (session == null) {
        		
            clientListener.onException(new Throwable("not connected"));
            
        }
        else
        {
        	
            session.write(clientRequest);
            
        }
    }
    
    public void messageReceived( IoSession session, Object message) throws Exception {
        
        bgServerResponse response = (bgServerResponse) message;
        Object o;
      o = response.getObject();
    	
      	clientListener.doServerAttached ( o );
        	
        }
        
    }

    public void exceptionCaught( Throwable cause) throws Exception {
    
        clientListener.onException( cause );
        
    }

}


// SERVER MODULE

public class bgMinaServer {

	// defines how messages are split into parts
	final String tokenizer;
			
	// commPort used for communications
	final int commPort;
	
	// the acceptor object	
	IoAcceptor acceptor = null;
	
	// the socket acceptor configuration
    SocketAcceptorConfig cfg;
    
    // the server handler object
    bgMinaServerHandler handler;
    
    bgServerListener serverListener;

	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
		
		this.serverListener = serverListener;
		this.commPort = commPort;
		this.tokenizer = tokenizer;
		
        ByteBuffer.setUseDirectBuffers(false);
       	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
			
       	acceptor = new SocketAcceptor();

       	cfg = new SocketAcceptorConfig();
       	cfg.getSessionConfig().setReuseAddress( true );
       	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
       	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
			
	}
	
	public void start() {

		try {
			
			handler = new bgMinaServerHandler();
			handler.serverListener = this.serverListener;
			handler.tokenizer = this.tokenizer;

	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
        	System.out.println("Game server started.");
       
  		} catch (IOException e) {
			
			e.printStackTrace();
			
		}
	}
}

public class bgMinaServerHandler extends IoHandlerAdapter {

	// the objectthat will listen to the server commands
	public bgServerListener serverListener;
	
	// defines how messages are split into parts
	String tokenizer;
	 
	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
	
	public void exceptionCaught(IoSession session, Throwable t) throws Exception {

		// check to see if we are connected
		if ( !session.isConnected() ) {
			
			serverListener.doDisconnect( session );
			// we are no longer conncted so we need to take this client out of our
			// currently connected client list
			// but how?
			// we could set a session attribute when the client connects to 
			// equal his ID number
			// then when he dosconnects we can remove him easily!
			
		}
		session.close();
		
	}

	public void messageReceived(IoSession session, Object message) throws Exception {

		// get the message from the network
		bgClientRequest request = (bgClientRequest)message;
		
		// holds tokenized messages used in networking communications
		bgTokenizedMessage commMessage = new bgTokenizedMessage();
		commMessage.setMessage ( request.getRequest(), tokenizer );
		
		if ( !commMessage.hasMessage() )
			return;
		
		String command = commMessage.getNextToken();
		if ( command.equalsIgnoreCase("REQUEST") ) {
				
			serverListener.doClientRequest( session, commMessage );
						
		}
		if ( command.equalsIgnoreCase("ATTEMPT") ) {
				
			serverListener.doClientAttempt( session, commMessage );
						
		}
		if ( command.equalsIgnoreCase("VOTE") ) {
		
			serverListener.doClientVote( session, commMessage );
					
		}
        
	}

    public void sessionOpened(IoSession session) throws Exception {

		System.out.println("Client connected...");

		if( session.getTransportType() == TransportType.SOCKET )
			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );

    }
}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee resolved DIRMINA-404.
---------------------------------

    Resolution: Cannot Reproduce
      Assignee: Trustin Lee

> The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-404
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
>            Reporter: Kevin Smeltzer
>            Assignee: Trustin Lee
>            Priority: Trivial
>         Attachments: Main.java
>
>
> // CLIENT MODULE
> public class bgMinaClient extends IoHandlerAdapter
> {
>     public static final int CONNECT_TIMEOUT = 10000;
>     private String host;
>     private int port;
>     private String tokenizer;
>     private SocketConnector connector;
>     private IoSession session;
>     private bgClientListener clientListener;
>     private ConnectFuture connectFuture;
>     
>     public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
>     	
>         this.host = host;
>         this.port = port;
>         this.tokenizer = tokenizer;
>         this.clientListener = clientListener;
>         connector = new SocketConnector();
>         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
>         
>     }
>     public void connect() {
>     	
>     	// try to connect 5 times before giving up
>     	int attempts = 5;
>     	do {
> 	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
>     	    connectFuture.join(CONNECT_TIMEOUT);
> 	        try
>     	    {
>         	
>             	session = connectFuture.getSession();
>             
>         	}
>         	catch (RuntimeIOException e)
>         	{
>         	
> 	            clientListener.onException( e );
>             
> 	        }
> 	        attempts--;
> 	        
>     	} while ( session == null && attempts > 0);
> 			
>     }
>     public void disconnect() {
>     	
>         if (session != null)
>         {
>         	
>             session.close().join(CONNECT_TIMEOUT);
>             session = null;
>             
>         }
>     }
>     public void sessionOpened(IoSession session) throws Exception {
>     	
>     	this.session = session;
> 		clientListener.doConnect( session );
>       
>     }
>     public void sessionClosed(IoSession session) throws Exception {
>     	
>         clientListener.doDisconnect();
>         
>     }
>     public void sendRequest( bgClientRequest clientRequest ) {
>         
>         if (session == null) {
>         		
>             clientListener.onException(new Throwable("not connected"));
>             
>         }
>         else
>         {
>         	
>             session.write(clientRequest);
>             
>         }
>     }
>     
>     public void messageReceived( IoSession session, Object message) throws Exception {
>         
>         bgServerResponse response = (bgServerResponse) message;
>         Object o;
>       o = response.getObject();
>     	
>       	clientListener.doServerAttached ( o );
>         	
>         }
>         
>     }
>     public void exceptionCaught( Throwable cause) throws Exception {
>     
>         clientListener.onException( cause );
>         
>     }
> }
> // SERVER MODULE
> public class bgMinaServer {
> 	// defines how messages are split into parts
> 	final String tokenizer;
> 			
> 	// commPort used for communications
> 	final int commPort;
> 	
> 	// the acceptor object	
> 	IoAcceptor acceptor = null;
> 	
> 	// the socket acceptor configuration
>     SocketAcceptorConfig cfg;
>     
>     // the server handler object
>     bgMinaServerHandler handler;
>     
>     bgServerListener serverListener;
> 	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
> 		
> 		this.serverListener = serverListener;
> 		this.commPort = commPort;
> 		this.tokenizer = tokenizer;
> 		
>         ByteBuffer.setUseDirectBuffers(false);
>        	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
> 			
>        	acceptor = new SocketAcceptor();
>        	cfg = new SocketAcceptorConfig();
>        	cfg.getSessionConfig().setReuseAddress( true );
>        	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
>        	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
> 			
> 	}
> 	
> 	public void start() {
> 		try {
> 			
> 			handler = new bgMinaServerHandler();
> 			handler.serverListener = this.serverListener;
> 			handler.tokenizer = this.tokenizer;
> 	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
>         	System.out.println("Game server started.");
>        
>   		} catch (IOException e) {
> 			
> 			e.printStackTrace();
> 			
> 		}
> 	}
> }
> public class bgMinaServerHandler extends IoHandlerAdapter {
> 	// the objectthat will listen to the server commands
> 	public bgServerListener serverListener;
> 	
> 	// defines how messages are split into parts
> 	String tokenizer;
> 	 
> 	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
> 	
> 	public void exceptionCaught(IoSession session, Throwable t) throws Exception {
> 		// check to see if we are connected
> 		if ( !session.isConnected() ) {
> 			
> 			serverListener.doDisconnect( session );
> 			// we are no longer conncted so we need to take this client out of our
> 			// currently connected client list
> 			// but how?
> 			// we could set a session attribute when the client connects to 
> 			// equal his ID number
> 			// then when he dosconnects we can remove him easily!
> 			
> 		}
> 		session.close();
> 		
> 	}
> 	public void messageReceived(IoSession session, Object message) throws Exception {
> 		// get the message from the network
> 		bgClientRequest request = (bgClientRequest)message;
> 		
> 		// holds tokenized messages used in networking communications
> 		bgTokenizedMessage commMessage = new bgTokenizedMessage();
> 		commMessage.setMessage ( request.getRequest(), tokenizer );
> 		
> 		if ( !commMessage.hasMessage() )
> 			return;
> 		
> 		String command = commMessage.getNextToken();
> 		if ( command.equalsIgnoreCase("REQUEST") ) {
> 				
> 			serverListener.doClientRequest( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("ATTEMPT") ) {
> 				
> 			serverListener.doClientAttempt( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("VOTE") ) {
> 		
> 			serverListener.doClientVote( session, commMessage );
> 					
> 		}
>         
> 	}
>     public void sessionOpened(IoSession session) throws Exception {
> 		System.out.println("Client connected...");
> 		if( session.getTransportType() == TransportType.SOCKET )
> 			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

Posted by "Emmanuel Lecharny (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny closed DIRMINA-404.
-------------------------------------


> The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-404
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
>            Reporter: Kevin Smeltzer
>            Assignee: Trustin Lee
>            Priority: Trivial
>         Attachments: Main.java
>
>
> // CLIENT MODULE
> public class bgMinaClient extends IoHandlerAdapter
> {
>     public static final int CONNECT_TIMEOUT = 10000;
>     private String host;
>     private int port;
>     private String tokenizer;
>     private SocketConnector connector;
>     private IoSession session;
>     private bgClientListener clientListener;
>     private ConnectFuture connectFuture;
>     
>     public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
>     	
>         this.host = host;
>         this.port = port;
>         this.tokenizer = tokenizer;
>         this.clientListener = clientListener;
>         connector = new SocketConnector();
>         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
>         
>     }
>     public void connect() {
>     	
>     	// try to connect 5 times before giving up
>     	int attempts = 5;
>     	do {
> 	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
>     	    connectFuture.join(CONNECT_TIMEOUT);
> 	        try
>     	    {
>         	
>             	session = connectFuture.getSession();
>             
>         	}
>         	catch (RuntimeIOException e)
>         	{
>         	
> 	            clientListener.onException( e );
>             
> 	        }
> 	        attempts--;
> 	        
>     	} while ( session == null && attempts > 0);
> 			
>     }
>     public void disconnect() {
>     	
>         if (session != null)
>         {
>         	
>             session.close().join(CONNECT_TIMEOUT);
>             session = null;
>             
>         }
>     }
>     public void sessionOpened(IoSession session) throws Exception {
>     	
>     	this.session = session;
> 		clientListener.doConnect( session );
>       
>     }
>     public void sessionClosed(IoSession session) throws Exception {
>     	
>         clientListener.doDisconnect();
>         
>     }
>     public void sendRequest( bgClientRequest clientRequest ) {
>         
>         if (session == null) {
>         		
>             clientListener.onException(new Throwable("not connected"));
>             
>         }
>         else
>         {
>         	
>             session.write(clientRequest);
>             
>         }
>     }
>     
>     public void messageReceived( IoSession session, Object message) throws Exception {
>         
>         bgServerResponse response = (bgServerResponse) message;
>         Object o;
>       o = response.getObject();
>     	
>       	clientListener.doServerAttached ( o );
>         	
>         }
>         
>     }
>     public void exceptionCaught( Throwable cause) throws Exception {
>     
>         clientListener.onException( cause );
>         
>     }
> }
> // SERVER MODULE
> public class bgMinaServer {
> 	// defines how messages are split into parts
> 	final String tokenizer;
> 			
> 	// commPort used for communications
> 	final int commPort;
> 	
> 	// the acceptor object	
> 	IoAcceptor acceptor = null;
> 	
> 	// the socket acceptor configuration
>     SocketAcceptorConfig cfg;
>     
>     // the server handler object
>     bgMinaServerHandler handler;
>     
>     bgServerListener serverListener;
> 	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
> 		
> 		this.serverListener = serverListener;
> 		this.commPort = commPort;
> 		this.tokenizer = tokenizer;
> 		
>         ByteBuffer.setUseDirectBuffers(false);
>        	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
> 			
>        	acceptor = new SocketAcceptor();
>        	cfg = new SocketAcceptorConfig();
>        	cfg.getSessionConfig().setReuseAddress( true );
>        	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
>        	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
> 			
> 	}
> 	
> 	public void start() {
> 		try {
> 			
> 			handler = new bgMinaServerHandler();
> 			handler.serverListener = this.serverListener;
> 			handler.tokenizer = this.tokenizer;
> 	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
>         	System.out.println("Game server started.");
>        
>   		} catch (IOException e) {
> 			
> 			e.printStackTrace();
> 			
> 		}
> 	}
> }
> public class bgMinaServerHandler extends IoHandlerAdapter {
> 	// the objectthat will listen to the server commands
> 	public bgServerListener serverListener;
> 	
> 	// defines how messages are split into parts
> 	String tokenizer;
> 	 
> 	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
> 	
> 	public void exceptionCaught(IoSession session, Throwable t) throws Exception {
> 		// check to see if we are connected
> 		if ( !session.isConnected() ) {
> 			
> 			serverListener.doDisconnect( session );
> 			// we are no longer conncted so we need to take this client out of our
> 			// currently connected client list
> 			// but how?
> 			// we could set a session attribute when the client connects to 
> 			// equal his ID number
> 			// then when he dosconnects we can remove him easily!
> 			
> 		}
> 		session.close();
> 		
> 	}
> 	public void messageReceived(IoSession session, Object message) throws Exception {
> 		// get the message from the network
> 		bgClientRequest request = (bgClientRequest)message;
> 		
> 		// holds tokenized messages used in networking communications
> 		bgTokenizedMessage commMessage = new bgTokenizedMessage();
> 		commMessage.setMessage ( request.getRequest(), tokenizer );
> 		
> 		if ( !commMessage.hasMessage() )
> 			return;
> 		
> 		String command = commMessage.getNextToken();
> 		if ( command.equalsIgnoreCase("REQUEST") ) {
> 				
> 			serverListener.doClientRequest( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("ATTEMPT") ) {
> 				
> 			serverListener.doClientAttempt( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("VOTE") ) {
> 		
> 			serverListener.doClientVote( session, commMessage );
> 					
> 		}
>         
> 	}
>     public void sessionOpened(IoSession session) throws Exception {
> 		System.out.println("Client connected...");
> 		if( session.getTransportType() == TransportType.SOCKET )
> 			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee updated DIRMINA-404:
--------------------------------

    Attachment: Main.java

I was not able to reproduce your problem.  The attached code (Main.java) tests the problem you reported.


> The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-404
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
>            Reporter: Kevin Smeltzer
>            Priority: Trivial
>         Attachments: Main.java
>
>
> // CLIENT MODULE
> public class bgMinaClient extends IoHandlerAdapter
> {
>     public static final int CONNECT_TIMEOUT = 10000;
>     private String host;
>     private int port;
>     private String tokenizer;
>     private SocketConnector connector;
>     private IoSession session;
>     private bgClientListener clientListener;
>     private ConnectFuture connectFuture;
>     
>     public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
>     	
>         this.host = host;
>         this.port = port;
>         this.tokenizer = tokenizer;
>         this.clientListener = clientListener;
>         connector = new SocketConnector();
>         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
>         
>     }
>     public void connect() {
>     	
>     	// try to connect 5 times before giving up
>     	int attempts = 5;
>     	do {
> 	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
>     	    connectFuture.join(CONNECT_TIMEOUT);
> 	        try
>     	    {
>         	
>             	session = connectFuture.getSession();
>             
>         	}
>         	catch (RuntimeIOException e)
>         	{
>         	
> 	            clientListener.onException( e );
>             
> 	        }
> 	        attempts--;
> 	        
>     	} while ( session == null && attempts > 0);
> 			
>     }
>     public void disconnect() {
>     	
>         if (session != null)
>         {
>         	
>             session.close().join(CONNECT_TIMEOUT);
>             session = null;
>             
>         }
>     }
>     public void sessionOpened(IoSession session) throws Exception {
>     	
>     	this.session = session;
> 		clientListener.doConnect( session );
>       
>     }
>     public void sessionClosed(IoSession session) throws Exception {
>     	
>         clientListener.doDisconnect();
>         
>     }
>     public void sendRequest( bgClientRequest clientRequest ) {
>         
>         if (session == null) {
>         		
>             clientListener.onException(new Throwable("not connected"));
>             
>         }
>         else
>         {
>         	
>             session.write(clientRequest);
>             
>         }
>     }
>     
>     public void messageReceived( IoSession session, Object message) throws Exception {
>         
>         bgServerResponse response = (bgServerResponse) message;
>         Object o;
>       o = response.getObject();
>     	
>       	clientListener.doServerAttached ( o );
>         	
>         }
>         
>     }
>     public void exceptionCaught( Throwable cause) throws Exception {
>     
>         clientListener.onException( cause );
>         
>     }
> }
> // SERVER MODULE
> public class bgMinaServer {
> 	// defines how messages are split into parts
> 	final String tokenizer;
> 			
> 	// commPort used for communications
> 	final int commPort;
> 	
> 	// the acceptor object	
> 	IoAcceptor acceptor = null;
> 	
> 	// the socket acceptor configuration
>     SocketAcceptorConfig cfg;
>     
>     // the server handler object
>     bgMinaServerHandler handler;
>     
>     bgServerListener serverListener;
> 	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
> 		
> 		this.serverListener = serverListener;
> 		this.commPort = commPort;
> 		this.tokenizer = tokenizer;
> 		
>         ByteBuffer.setUseDirectBuffers(false);
>        	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
> 			
>        	acceptor = new SocketAcceptor();
>        	cfg = new SocketAcceptorConfig();
>        	cfg.getSessionConfig().setReuseAddress( true );
>        	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
>        	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
> 			
> 	}
> 	
> 	public void start() {
> 		try {
> 			
> 			handler = new bgMinaServerHandler();
> 			handler.serverListener = this.serverListener;
> 			handler.tokenizer = this.tokenizer;
> 	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
>         	System.out.println("Game server started.");
>        
>   		} catch (IOException e) {
> 			
> 			e.printStackTrace();
> 			
> 		}
> 	}
> }
> public class bgMinaServerHandler extends IoHandlerAdapter {
> 	// the objectthat will listen to the server commands
> 	public bgServerListener serverListener;
> 	
> 	// defines how messages are split into parts
> 	String tokenizer;
> 	 
> 	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
> 	
> 	public void exceptionCaught(IoSession session, Throwable t) throws Exception {
> 		// check to see if we are connected
> 		if ( !session.isConnected() ) {
> 			
> 			serverListener.doDisconnect( session );
> 			// we are no longer conncted so we need to take this client out of our
> 			// currently connected client list
> 			// but how?
> 			// we could set a session attribute when the client connects to 
> 			// equal his ID number
> 			// then when he dosconnects we can remove him easily!
> 			
> 		}
> 		session.close();
> 		
> 	}
> 	public void messageReceived(IoSession session, Object message) throws Exception {
> 		// get the message from the network
> 		bgClientRequest request = (bgClientRequest)message;
> 		
> 		// holds tokenized messages used in networking communications
> 		bgTokenizedMessage commMessage = new bgTokenizedMessage();
> 		commMessage.setMessage ( request.getRequest(), tokenizer );
> 		
> 		if ( !commMessage.hasMessage() )
> 			return;
> 		
> 		String command = commMessage.getNextToken();
> 		if ( command.equalsIgnoreCase("REQUEST") ) {
> 				
> 			serverListener.doClientRequest( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("ATTEMPT") ) {
> 				
> 			serverListener.doClientAttempt( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("VOTE") ) {
> 		
> 			serverListener.doClientVote( session, commMessage );
> 					
> 		}
>         
> 	}
>     public void sessionOpened(IoSession session) throws Exception {
> 		System.out.println("Client connected...");
> 		if( session.getTransportType() == TransportType.SOCKET )
> 			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DIRMINA-404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12516640 ] 

Trustin Lee commented on DIRMINA-404:
-------------------------------------

Please feel free to modify the example code to try to reproduce your problem.

> The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-404
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
>            Reporter: Kevin Smeltzer
>            Assignee: Trustin Lee
>            Priority: Trivial
>         Attachments: Main.java
>
>
> // CLIENT MODULE
> public class bgMinaClient extends IoHandlerAdapter
> {
>     public static final int CONNECT_TIMEOUT = 10000;
>     private String host;
>     private int port;
>     private String tokenizer;
>     private SocketConnector connector;
>     private IoSession session;
>     private bgClientListener clientListener;
>     private ConnectFuture connectFuture;
>     
>     public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
>     	
>         this.host = host;
>         this.port = port;
>         this.tokenizer = tokenizer;
>         this.clientListener = clientListener;
>         connector = new SocketConnector();
>         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
>         
>     }
>     public void connect() {
>     	
>     	// try to connect 5 times before giving up
>     	int attempts = 5;
>     	do {
> 	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
>     	    connectFuture.join(CONNECT_TIMEOUT);
> 	        try
>     	    {
>         	
>             	session = connectFuture.getSession();
>             
>         	}
>         	catch (RuntimeIOException e)
>         	{
>         	
> 	            clientListener.onException( e );
>             
> 	        }
> 	        attempts--;
> 	        
>     	} while ( session == null && attempts > 0);
> 			
>     }
>     public void disconnect() {
>     	
>         if (session != null)
>         {
>         	
>             session.close().join(CONNECT_TIMEOUT);
>             session = null;
>             
>         }
>     }
>     public void sessionOpened(IoSession session) throws Exception {
>     	
>     	this.session = session;
> 		clientListener.doConnect( session );
>       
>     }
>     public void sessionClosed(IoSession session) throws Exception {
>     	
>         clientListener.doDisconnect();
>         
>     }
>     public void sendRequest( bgClientRequest clientRequest ) {
>         
>         if (session == null) {
>         		
>             clientListener.onException(new Throwable("not connected"));
>             
>         }
>         else
>         {
>         	
>             session.write(clientRequest);
>             
>         }
>     }
>     
>     public void messageReceived( IoSession session, Object message) throws Exception {
>         
>         bgServerResponse response = (bgServerResponse) message;
>         Object o;
>       o = response.getObject();
>     	
>       	clientListener.doServerAttached ( o );
>         	
>         }
>         
>     }
>     public void exceptionCaught( Throwable cause) throws Exception {
>     
>         clientListener.onException( cause );
>         
>     }
> }
> // SERVER MODULE
> public class bgMinaServer {
> 	// defines how messages are split into parts
> 	final String tokenizer;
> 			
> 	// commPort used for communications
> 	final int commPort;
> 	
> 	// the acceptor object	
> 	IoAcceptor acceptor = null;
> 	
> 	// the socket acceptor configuration
>     SocketAcceptorConfig cfg;
>     
>     // the server handler object
>     bgMinaServerHandler handler;
>     
>     bgServerListener serverListener;
> 	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
> 		
> 		this.serverListener = serverListener;
> 		this.commPort = commPort;
> 		this.tokenizer = tokenizer;
> 		
>         ByteBuffer.setUseDirectBuffers(false);
>        	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
> 			
>        	acceptor = new SocketAcceptor();
>        	cfg = new SocketAcceptorConfig();
>        	cfg.getSessionConfig().setReuseAddress( true );
>        	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
>        	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
> 			
> 	}
> 	
> 	public void start() {
> 		try {
> 			
> 			handler = new bgMinaServerHandler();
> 			handler.serverListener = this.serverListener;
> 			handler.tokenizer = this.tokenizer;
> 	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
>         	System.out.println("Game server started.");
>        
>   		} catch (IOException e) {
> 			
> 			e.printStackTrace();
> 			
> 		}
> 	}
> }
> public class bgMinaServerHandler extends IoHandlerAdapter {
> 	// the objectthat will listen to the server commands
> 	public bgServerListener serverListener;
> 	
> 	// defines how messages are split into parts
> 	String tokenizer;
> 	 
> 	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
> 	
> 	public void exceptionCaught(IoSession session, Throwable t) throws Exception {
> 		// check to see if we are connected
> 		if ( !session.isConnected() ) {
> 			
> 			serverListener.doDisconnect( session );
> 			// we are no longer conncted so we need to take this client out of our
> 			// currently connected client list
> 			// but how?
> 			// we could set a session attribute when the client connects to 
> 			// equal his ID number
> 			// then when he dosconnects we can remove him easily!
> 			
> 		}
> 		session.close();
> 		
> 	}
> 	public void messageReceived(IoSession session, Object message) throws Exception {
> 		// get the message from the network
> 		bgClientRequest request = (bgClientRequest)message;
> 		
> 		// holds tokenized messages used in networking communications
> 		bgTokenizedMessage commMessage = new bgTokenizedMessage();
> 		commMessage.setMessage ( request.getRequest(), tokenizer );
> 		
> 		if ( !commMessage.hasMessage() )
> 			return;
> 		
> 		String command = commMessage.getNextToken();
> 		if ( command.equalsIgnoreCase("REQUEST") ) {
> 				
> 			serverListener.doClientRequest( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("ATTEMPT") ) {
> 				
> 			serverListener.doClientAttempt( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("VOTE") ) {
> 		
> 			serverListener.doClientVote( session, commMessage );
> 					
> 		}
>         
> 	}
>     public void sessionOpened(IoSession session) throws Exception {
> 		System.out.println("Client connected...");
> 		if( session.getTransportType() == TransportType.SOCKET )
> 			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (DIRMINA-404) The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DIRMINA-404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12516640 ] 

Trustin Lee edited comment on DIRMINA-404 at 7/31/07 12:52 AM:
---------------------------------------------------------------

Please feel free to modify the attached test code to try to reproduce your problem.


 was:
Please feel free to modify the example code to try to reproduce your problem.

> The IoSession returned by session = connectFuture.getSession() is different than the one passed to sessionOpened(IoSession session)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-404
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-404
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
>            Reporter: Kevin Smeltzer
>            Assignee: Trustin Lee
>            Priority: Trivial
>         Attachments: Main.java
>
>
> // CLIENT MODULE
> public class bgMinaClient extends IoHandlerAdapter
> {
>     public static final int CONNECT_TIMEOUT = 10000;
>     private String host;
>     private int port;
>     private String tokenizer;
>     private SocketConnector connector;
>     private IoSession session;
>     private bgClientListener clientListener;
>     private ConnectFuture connectFuture;
>     
>     public bgMinaClient(String host, int port, String tokenizer, bgClientListener clientListener) {
>     	
>         this.host = host;
>         this.port = port;
>         this.tokenizer = tokenizer;
>         this.clientListener = clientListener;
>         connector = new SocketConnector();
>         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new bgCodecFactory(true)));
>         
>     }
>     public void connect() {
>     	
>     	// try to connect 5 times before giving up
>     	int attempts = 5;
>     	do {
> 	        connectFuture = connector.connect(new InetSocketAddress(host,port), this);
>     	    connectFuture.join(CONNECT_TIMEOUT);
> 	        try
>     	    {
>         	
>             	session = connectFuture.getSession();
>             
>         	}
>         	catch (RuntimeIOException e)
>         	{
>         	
> 	            clientListener.onException( e );
>             
> 	        }
> 	        attempts--;
> 	        
>     	} while ( session == null && attempts > 0);
> 			
>     }
>     public void disconnect() {
>     	
>         if (session != null)
>         {
>         	
>             session.close().join(CONNECT_TIMEOUT);
>             session = null;
>             
>         }
>     }
>     public void sessionOpened(IoSession session) throws Exception {
>     	
>     	this.session = session;
> 		clientListener.doConnect( session );
>       
>     }
>     public void sessionClosed(IoSession session) throws Exception {
>     	
>         clientListener.doDisconnect();
>         
>     }
>     public void sendRequest( bgClientRequest clientRequest ) {
>         
>         if (session == null) {
>         		
>             clientListener.onException(new Throwable("not connected"));
>             
>         }
>         else
>         {
>         	
>             session.write(clientRequest);
>             
>         }
>     }
>     
>     public void messageReceived( IoSession session, Object message) throws Exception {
>         
>         bgServerResponse response = (bgServerResponse) message;
>         Object o;
>       o = response.getObject();
>     	
>       	clientListener.doServerAttached ( o );
>         	
>         }
>         
>     }
>     public void exceptionCaught( Throwable cause) throws Exception {
>     
>         clientListener.onException( cause );
>         
>     }
> }
> // SERVER MODULE
> public class bgMinaServer {
> 	// defines how messages are split into parts
> 	final String tokenizer;
> 			
> 	// commPort used for communications
> 	final int commPort;
> 	
> 	// the acceptor object	
> 	IoAcceptor acceptor = null;
> 	
> 	// the socket acceptor configuration
>     SocketAcceptorConfig cfg;
>     
>     // the server handler object
>     bgMinaServerHandler handler;
>     
>     bgServerListener serverListener;
> 	public bgMinaServer ( int commPort, String tokenizer, bgServerListener serverListener ) {
> 		
> 		this.serverListener = serverListener;
> 		this.commPort = commPort;
> 		this.tokenizer = tokenizer;
> 		
>         ByteBuffer.setUseDirectBuffers(false);
>        	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
> 			
>        	acceptor = new SocketAcceptor();
>        	cfg = new SocketAcceptorConfig();
>        	cfg.getSessionConfig().setReuseAddress( true );
>        	//cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
>        	cfg.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new bgCodecFactory(false)));
> 			
> 	}
> 	
> 	public void start() {
> 		try {
> 			
> 			handler = new bgMinaServerHandler();
> 			handler.serverListener = this.serverListener;
> 			handler.tokenizer = this.tokenizer;
> 	        acceptor.bind( new InetSocketAddress( commPort ), handler, cfg);
>         	System.out.println("Game server started.");
>        
>   		} catch (IOException e) {
> 			
> 			e.printStackTrace();
> 			
> 		}
> 	}
> }
> public class bgMinaServerHandler extends IoHandlerAdapter {
> 	// the objectthat will listen to the server commands
> 	public bgServerListener serverListener;
> 	
> 	// defines how messages are split into parts
> 	String tokenizer;
> 	 
> 	public static final String CLIENT_KEY = bgMinaServerHandler.class.getName() + ".CLIENTID";
> 	
> 	public void exceptionCaught(IoSession session, Throwable t) throws Exception {
> 		// check to see if we are connected
> 		if ( !session.isConnected() ) {
> 			
> 			serverListener.doDisconnect( session );
> 			// we are no longer conncted so we need to take this client out of our
> 			// currently connected client list
> 			// but how?
> 			// we could set a session attribute when the client connects to 
> 			// equal his ID number
> 			// then when he dosconnects we can remove him easily!
> 			
> 		}
> 		session.close();
> 		
> 	}
> 	public void messageReceived(IoSession session, Object message) throws Exception {
> 		// get the message from the network
> 		bgClientRequest request = (bgClientRequest)message;
> 		
> 		// holds tokenized messages used in networking communications
> 		bgTokenizedMessage commMessage = new bgTokenizedMessage();
> 		commMessage.setMessage ( request.getRequest(), tokenizer );
> 		
> 		if ( !commMessage.hasMessage() )
> 			return;
> 		
> 		String command = commMessage.getNextToken();
> 		if ( command.equalsIgnoreCase("REQUEST") ) {
> 				
> 			serverListener.doClientRequest( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("ATTEMPT") ) {
> 				
> 			serverListener.doClientAttempt( session, commMessage );
> 						
> 		}
> 		if ( command.equalsIgnoreCase("VOTE") ) {
> 		
> 			serverListener.doClientVote( session, commMessage );
> 					
> 		}
>         
> 	}
>     public void sessionOpened(IoSession session) throws Exception {
> 		System.out.println("Client connected...");
> 		if( session.getTransportType() == TransportType.SOCKET )
> 			System.out.println("Receive buffer: " + ((SocketSessionConfig) session.getConfig() ).getReceiveBufferSize() );
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.