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