On 8/21/11 8:39 PM, Edouard De Oliveira wrote:

On Aug 20, 2011, at 11:47 PM, Emmanuel Lecharny wrote:

On 8/21/11 2:09 AM, Alan D. Cabrera wrote:
Wow, I totally forgot about these pages.

There's been a fair bit of discussion on this topic on the mailing list before, 
this being the need for dynamically modifying filter chains in a session that's 
already being used.  It is my assertion that it is an anti-pattern that signals 
the need for a state machine.  Getting a protocol right on both network 
endpoints is very hard and dynamic chains make it even more difficult and error 
prone.  APIs should promote good practices.

There are implementation issues as well. Look how complicated the 
implementation, sketched by Edouard, gets below.

Normally I'm a let a thousand flowers bloom kind of guy.  But, as you know, 
I've been a strong advocate of thinning Mina's bloated class library.  I find 
it difficult justifying CoW chains in a library that people already find 
bewildering.

Just my 2 cents.  Let's get this finally resolved as this topic seems to pop up 
on a regular basis.
IMHO, we usually don't need a dynamic chain. There is little to no reason to 
have it. One objection could be that one may want to inject a log filter on the 
fly.
When one really thinks about it one never just james a log filter in on the fly.  
Logging a network endpoint requires a fair bit of thought, where does it go in the 
chain, where does it>log to, how chatty it is, etc.  Usually, it's always in 
the chain waiting to be turned on by management bits.  With that said, we're 
talking about a simple two state FSM, on/off.

Log is a bad filter example we know it from long ago we should use some 
instrumentation like tools to make it efficient but something configurable at 
runtime easily would be even better

But i'm feeling more and more confused by the fsm need : as you said some 
management bits in the session can switch on/off some filters why do we want to 
complicate the coder 's life using a two state FSM (in the case of multiple 
filters it would generate  a much more complicated FSM that the coder would 
have to describe with code ... better ?) ?

Do you want the fsm to control the flow between filters (state=filter ?) or do 
you want your fsm to control if a filter is active ?

The FSM obviously will control the flow. The FSM can also check if the filter is active, but this is an extra feature, IMHO.


--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to