« Return to Thread: [mina] Refactoring MINA IoFilterChain (Was: IoFilters: DIRMINA-121 / 122)

Re: [mina] Refactoring MINA IoFilterChain (Was: IoFilters: DIRMINA-121 / 122)

by Niklas Therning :: Rate this Message:

Reply to Author | View in Thread

Trustin Lee wrote:

> 2005/11/15, Niklas Therning <niklas@...
> <mailto:niklas@...>>:
>
>     I just realized that when calling IoSession.write() the concrete
>     IoSession implementation will always know the final destination of the
>     write event. For SocketSessionImpl the final destination is always
>     SocketIoProcessor.
>
>     So the IoFilterChain methods for downstream events look like this:
>
>     void write( IoSession session, WriteRequest writeRequest,
>     IoProcessor p
>     ) throws Exception;
>
>     SocketSessionImpl's write() method looks like this:
>
>     public WriteFuture write( Object message ) {
>         this.filterChain.write(this, new WriteRequest(),
>     SocketIoProcesso.getInstance());
>     }
>
>
> What is the difference from overriding the head filter of
> sessionmanager-level chain to call SocketIoProcessor.flush()
> explicitly?  We can still get rid of SocketSessionManagerFilterChain
> without introducing a new parameter.
>
If the user can change the filter chain of an IoAcceptor by calling
setFilterChain() you won't be able to override any method to inject this
behaviour. Likewise if there is a bind(address, chain, handler) method.
Unless you copy the user supplied chain into some IoFilterChain
implementation which we have control over. And from what I understand
copying is out of the question. Or am I missing something?

> I'll check in this change so you can see it more clearly.

Please do that. Maybe that will make me understand! :)

/Niklas

Niklas Therning
www.spamdrain.net

 « Return to Thread: [mina] Refactoring MINA IoFilterChain (Was: IoFilters: DIRMINA-121 / 122)