On Mon, Dec 14, 2009 at 10:01 PM, Alan D. Cabrera <[email protected]> wrote: > > On Dec 13, 2009, at 8:22 PM, Ashish wrote: > >>> Agreed, the SM approach should cover all cases; even the logging case in >>> your subsequent post. >>> >>> So with that said, would it not make sense to have a set of fixed filter >>> chains w/ each chain representing a state rather than a bucket of filters >>> with each filter deciding the next filter to execute? >> >> Sorry , but I am confused :-( >> can you help me understand how the Filter chains as a state would work? >> >> Here is a simple Chain. The one with * can be dynamically >> added/removed. Logging filter could be added at multiple places >> >> Acceptor -> BlackList Filter -> Logging Filter* -> Throughput Filter* >> -> Executor Filter -> Codec -> Logging Filter * >> ->IoHandler >> >> Now how would the suggested approach work?? >> > > By previous posts we agreed that there is no need to dynamically add and > remove filters in an ad hoc manner; it was merely a mechanism to simulate a > state machine. Earlier in this thread we discussed how the state machine > would fit into the Mina architecture: > > It's my opinion that new filters get created to simulate state machine > changes and any other use is an ad hoc mechanism that can be more cleanly > refactored into a state machine mechanism. With that said aa session w/ N > fixed chains where each chain represents a state would fit the bill. The > number of states is fixed. The composition of the state machine can be > changed until the acceptor/connector have established the connection. > > Acceptor -> ChainMachine -> IoHandler > > inside the chain machine: > > S1: IOF1 -> IOF2 -> IOF3 -> IOF5 -> IOF4 > S2: IOF1 -> IOF3 -> IOF5 -> IOF4 > S3: IOF1 -> IOF2 -> IOF3 -> IOF4 > > From a user's perspective things are quite easy to grok and most cases the > chain machine degenerates into a single state chain. > > > The above state machine supported your example of changing state chains: > > / IOF->IOF2->IOF3->IOF5->IOF4->IoHandler > Acceptor->IOF1->X->IOF3->IOF5->IOF4->IoHandler > \ IOF1->IOF2->IOF3->X->IOF4->IoHandler >
Thanks ! Its clear now :-) -- thanks ashish Blog: http://www.ashishpaliwal.com/blog My Photo Galleries: http://www.pbase.com/ashishpaliwal
