Hi Niklas, I am reading the mina mailing list since about a year, but this is the first time I see a recommendation to keep the ProtocolDecoder implemantation stateless. I prefer to create a new decoder per session and keep the decoder state in the decode. Sound OO-principle says : store the state in the class that uses it.
Should I really anticipate that mina will someday no longer support statefull decoders ? Maarten On 3/16/07, Niklas Therning <[EMAIL PROTECTED]> wrote:
Nordin, Glenn wrote: > Hi! > > I have two questions about Apache MINA 1.0 . > > 1. Is it possible to store state for incomplete reads in > ProtocolDecoderAdapter without mixing state from different sessions, > if I always create a new instance (prototype) of the ProtocolDecoder > in ProtocolCodecFactory.getDecoder method? > In other words ignoring the IoSession parameter in the decode method > as if the same IoSession is always returned. > ProtocolCodecFilter in MINA 1.0 will use the ProtocolCodecFactory to get a per session decoder the first time a message is received for a session. The decoder is stored as a session attribute and reused when decoding subsequent messages for that session. Judging from this it should be safe to have stateful ProtocolDecoders as you are suggesting. However, this behavior could change in future versions of MINA. To be on the safe side you should store the per session state as session attributes and keep your ProtocolDecoder stateless. > 2. IoHandler and ProtocolDecoderAdapter: > I think only a single thread is used per session at the same time, > but it is not always the same thread. > Can I write code as if the same thread per session is executing the > methods in IoHandler and ProtocolDecoder? > I guess this depends on how you have set up your thread model (see http://mina.apache.org/configuring-thread-model.html). But generally speaking I don't think this is a good idea. What are you trying to achieve? HTH -- Niklas Therning www.spamdrain.net
