Thanks,got it, I Will try to implement that tomorrow.
--
Julien Vermillard

Le 20 août 2011 à 09:30, Emmanuel Lecharny <elecha...@gmail.com> a
écrit :

> On 8/20/11 8:49 AM, Julien Vermillard wrote:
>> Hi,
>> Because a filterchain can be shared across different sessions and
>> threads, so you need to pass the local chain index because you can
>> store it locally in the filter chain. Perhaps there is something
>> smarter to do, because it's the dark point of this API.
>
> The filter chain is copied into the session (at least, it was what was
> done for MINA 2). Assuming that two different sessions might use two
> different chains, and assumng that the chain might be dynamically
> changed, it makes sense to do this copy.
>
> Now, if we can split the session (using an executor for instance),
> then
> the chain must be copied. It would make sense to store the chain
> into a
> ThreadLocal variable instead of storing it into a session object.
>>
>> Julien
>>
>> On Sat, Aug 20, 2011 at 12:41 AM, Alan D. Cabrera<l...@toolazydogs.com
>> >  wrote:
>>> Why do we pass the current position?  We also seem to pass it
>>> twice in the method and the controller.
>>>
>>>
>>> Regards,
>>> Alan
>>>
>>> On Aug 19, 2011, at 1:10 PM, Julien Vermillard wrote:
>>>
>>>> Ok I committed the modification, for passing a chain controller
>>>> to the
>>>> filter for delegating the call to next filter.
>>>>
>>>> First I did it only for read&  write chaining because the other
>>>> events
>>>> (created,open,closed,idle) are fine like they are. They don't
>>>> need to
>>>> block an event or send it multiple time to the following filter.
>>>>
>>>> Here the modified IoFilter, some controller interface are passed to
>>>> read&  write events :
>>>> http://svn.apache.org/repos/asf/mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java
>>>>
>>>>
>>>> Here sample implementation of LoggingFilter :
>>>> http://svn.apache.org/repos/asf/mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
>>>>
>>>> Here the FilterChain implementation, still simple :
>>>> http://svn.apache.org/repos/asf/mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java
>>>>
>>>> Now I need to figure how to remove the current position argument of
>>>> the filter call.
>>>>
>>>> Julien
>>>>
>>>>
>>>> On Fri, Aug 19, 2011 at 2:46 PM, Julien Vermillard
>>>> <jvermill...@gmail.com>  wrote:
>>>>> I half implemented the controller idea, it's looking like working,
>>>>> I'll finish that during the weekend or next week and commit it for
>>>>> review.
>>>>> Julien
>>>>>
>>>>> On Fri, Aug 19, 2011 at 2:39 PM, Steve Ulrich<steve.ulr...@proemion.com
>>>>> >  wrote:
>>>>>> Hi!
>>>>>>
>>>>>> Besides the points you mentioned, there are some other flaws:
>>>>>> 1) How do you handle post-message-forwarding logic?
>>>>>> 2) How do you handle filters that transparently push messages
>>>>>> to the underlying filters (e.g. keep alive)?
>>>>>>
>>>>>> So the filters should decide about what to do, the chain about
>>>>>> the where.
>>>>>>
>>>>>> regards
>>>>>>
>>>>>> Steve
>>>>>>
>>>>>> There could be specific (empty, single-result, multi-result)
>>>>>> implementations that can be extended as needed.
>>>>>>
>>>>>>> Julien Vermillard [mailto:jvermill...@gmail.com] wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>> I implemented some really simple chain for MINA 3 based on a
>>>>>>> list of
>>>>>>> chain processed by a filter chain.
>>>>>>>
>>>>>>> The implementation is very simple, sounded like a good idea :
>>>>>>> http://svn.apache.org/repos/asf/mina/branches/3.0/core/src/main/java/or
>>>>>>> g/apache/mina/filterchain/DefaultIoFilterChain.java
>>>>>>>
>>>>>>> But when i started implementing an HTTP codec  I started to
>>>>>>> see the
>>>>>>> real design issues.
>>>>>>> The problem is when you need to produce more than one object
>>>>>>> during a
>>>>>>> filter processing, like when you find more than one PDU in a
>>>>>>> ByteBuffer.
>>>>>>>
>>>>>>> We could change IoFilter method :
>>>>>>>   Object messageReceived(IoSession session, Object message);
>>>>>>> To :
>>>>>>>   List<Object>  messageReceived(IoSession session, Object
>>>>>>> message);
>>>>>>>
>>>>>>> But starting to use collection here sound like an overkill and
>>>>>>> not
>>>>>>> really a nice idea if we want to keep the memory usage low
>>>>>>> enough.
>>>>>>>
>>>>>>> So I'm scraping the current implementation, I'm going to try
>>>>>>> something
>>>>>>> else suggested by Emmanuel :
>>>>>>> When a filter want to call the next filter, he ask it to the
>>>>>>> filter
>>>>>>> controller (aka the FilterChain). Let's see if it's going
>>>>>>> somewhere
>>>>>>> this time ;)
>>>>>>>
>>>>>>> Julien
>>>
>
>
> --
> Regards,
> Cordialement,
> Emmanuel Lécharny
> www.iktek.com
>

Reply via email to