On Nov 26, 2009, at 2:25 AM, Ashish wrote:

Have started looking into the FilterChain implementation and here are
some initial thoughts

1. Rename IoFilterChain as IoChannel - it gives a more clear picture
and is easy to understand like imagine as a Channel with multiple
stages aka IoFilters.
This came while I was drawing on paper to design something.

2. Have captured a couple of API's that are core to IoChannel

             IoSession getSession();

             IoFilter getHead();

             IoFilter getNextFilter(IoFilter currentFilter);

             List<IoFilter> getAll();

             void addFilter(String name, IoFilter filter);

             void addAfter(String baseName, String filterName,
IoFilter filter);

             void removeFilter(String filterName);

My Mina is a bit rusty so my comments may be a bit off base. I would simplify this to

List<IoFilter> getChain()

Where one can re/move items in the chain.

I would remove the filter name parameter since this is an aspect of the filter and not its role in the chain.

What we end up with is nice and clean and we leverage the well known class List and its iterators. As a matter of fact, I might toss out the chain class all together and just have

interface IoSession {
    List<IoFilter> getChain();
}


Here we just got rid of one class and six methods for the same exact functionality while leveraging well known classes, i.e. LIst<>.


Regards,
Alan




Reply via email to