On Aug 26, 2011, at 6:40 AM, Julien Vermillard wrote:

> On Fri, Aug 26, 2011 at 3:24 PM, Alan D. Cabrera <l...@toolazydogs.com> 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?

>Regards,
>Alan

On my side, besides the @ fsm declaration api (which may be impossible to use 
as i think it fixes the position of a filter in the chain which is not 
universal) 
i wrote a simple api i'd like your thoughts on (using the type of syntax used 
in hibernate criteria) : 

FSMState init = getInitialState();
FSMState b = init.linksTo(FSMStateB.class);
b.linksTo(FSMStateZ.class);

FSMState d = b.linksTo(FSMStateC.class).linksTo(FSMStateD.class);
d.linksTo(FSMStateE.class);
d.linksTo(FSMStateF.class);

which represents obviously :

INIT -> B -> Z
      |-> C -> D -> E
|-> F
wdyt ?

Reply via email to