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

Reply via email to