On 8/26/11 4:41 PM, Julien Vermillard wrote:
On Fri, Aug 26, 2011 at 4:28 PM, Alan D. Cabrera<[email protected]> wrote:
On Aug 26, 2011, at 7:12 AM, Julien Vermillard wrote:
On Fri, Aug 26, 2011 at 4:07 PM, Emmanuel Lecharny<[email protected]> wrote:
On 8/26/11 3:44 PM, Alan D. Cabrera wrote:
On Aug 26, 2011, at 6:40 AM, Julien Vermillard wrote:
On Fri, Aug 26, 2011 at 3:24 PM, Alan D. Cabrera<[email protected]>
wrote:
On Aug 26, 2011, at 4:14 AM, Julien Vermillard wrote:
I modified the API to remove IoFilterChain. Now you are supposed to
give a list of filter to the service before starting it :
// create the fitler chain for this service
List<IoFilter> filters = new ArrayList<IoFilter>();
filters.add(new LoggingFilter("byte log filter"));
filters.add(new MyCodecFilter());
filters.add(new LoggingFilter("pojo log filter"));
filters.add(newMyProtocolLogicFilter());
acceptor.setFilters(filters);
acceptor.bind(...);
How do we make chains where two filters feed into one or one filter
feeds two filters? If you look in my sandbox we can accommodate this via:
static import a.m.util.Util. linkParentWithChild; // to be written
IoFilter foo = new FooFilter();
LinkStateFilter link = new LinkStateFilter();
IoFilter checksum = new ChecksumFilter();
IoFilter log = new LogFilter();
link.addLinkStateListener(foo);
linkParentWithChild(foo, checksum);
linkParentWithChild(link, checksum);
linkParentWithChild(checksum, log);
acceptor.setFilters(foo);
About the code in the sandbox :
http://svn.apache.org/repos/asf/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java
I see no IoFilter.addLinkStateListener(..) method, am I looking at the
right place ?
Oops, it was meant to just be a sketch. :)
About the "filters feed into one or one filter feeds two filters", do
you have a concrete use case in mind for that ?
The above example does, Foo and the link state filter. I'm sure that
we've discussed this before. Another example is a mux/demux situation. How
would all of this fit into the grand scheme of things?
Yeah, it really should be a graph of filters, not a list of filters.
Well if it's just for demuxing I proposed few mails ago this solution
: http://s.apache.org/A9W
I think we need to make graphing a 1st class citizen and not buried inside
another filter class.
I think we need to avoid complex feature like graph. IMHO server in
MINA is a codec and an handler 90% of the time. Someone have a use
case which could use filter graph with MINA ?
yes. We use it for LDAP... And we have had some users asking how to
manage a decoder for multiple kind of messages.
This is not something we want just because it's beautiful.
Now, what about having a controller hidding the internal structure, so
that we can switch to a graph later ? IMO, we should not expose the
inner data structure, be it a list or a graph. It's the controller's
business to deal with that.
However, we must provide the current state to the controller, it's not
enough to provide the current filter.
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com