You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Trustin Lee (JIRA)" <ji...@apache.org> on 2006/03/12 06:49:00 UTC

[jira] Commented: (DIRMINA-187) Support IoHandler per IoSession (SingleSessionIoHandler)

    [ http://issues.apache.org/jira/browse/DIRMINA-187?page=comments#action_12370046 ] 

Trustin Lee commented on DIRMINA-187:
-------------------------------------

This solution looks a little bit complicated IMHO.  What do you think about this:

interface IoHandlerFactory
{
    IoHandler getHandler( IoSession session );
}

interface IoAcceptor
{
    void bind( SocketAddress address, IoHandler handler ); // one handler handles multiple sessions
    void bind( SocketAddress address, IoHandlerFactory handlerFactory ); // multiple handler handler multiple sessions
    void bind( SocketAddress address, Class<IoHandler> handlerClass ); // multiple handler multiple sessions, handlerClass is instantiated whenever a new session is created.
}

<usage 1>

class MyHandlerFactory implements IoHandlerFactory
{
    IoHandler getHandler( IoSession session )
    {
        return new MyHandler();  // MyHandler implements IoHandler
    }
}

acceptor.bind( ..., new MyHandlerFactory() );

<usage 2>
acceptor.bind(..., MyHandler.class);

This will seamlessly integrate per-session handlers retaining backward compatibility.

> Support IoHandler per IoSession (SingleSessionIoHandler)
> --------------------------------------------------------
>
>          Key: DIRMINA-187
>          URL: http://issues.apache.org/jira/browse/DIRMINA-187
>      Project: Directory MINA
>         Type: New Feature
>     Reporter: Simon Raess
>     Priority: Minor
>  Attachments: single-session-handler.zip
>
> Currently, when binding an IoAcceptor a single IoHandler is specified that is shared among all sessions. This shared IoHandler cannot use instance variables (without proper synchronization), because it is accessed concurrently by multiple threads. The handler state has to be stored as session attributes. However, if there was one IoHandler per IoSession, state stored in instance variables of the IoHandler could be used safely.
> The attached zip file contains an implemented solution (as suggested by Niklas Therning) for this idea. See the following post in the mailing list archive for a detailed description:
> http://mail-archives.apache.org/mod_mbox/directory-mina-dev/200603.mbox/%3c440D9FDE.9010701@trillian.se%3e
> What do you think?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira