Trustin Lee wrote: > On 8/17/07, Maarten Bosteels <[EMAIL PROTECTED]> wrote: > >> On 8/17/07, Trustin Lee <[EMAIL PROTECTED]> wrote: >> >>> On 8/17/07, Julien Vermillard <[EMAIL PROTECTED]> wrote: >>> >>>> Hi, >>>> It think the ProtocolDecoder implementer can encapsulate his logic >>>> under some other class if it doesn't want to depend on MINA, but with >>>> ByteBuffer, and all the point Maaarten added (like >>>> ProtocolDecoderOutput) I think it won't be easly doable without >>>> breaking the codec API and sacrifice some of it simplicity. >>>> >>> Yeah, you are right. I forgot the ByteBuffer! :) >>> >>> But the point here is to decouple a codec from IoSession so the codec >>> can be easily adaptable into other application component. ByteBuffer >>> and ProtocolEncoder/DecoderOutput is very easy to convert as you know >>> because they are very simple, but IoSession is a different beast. >>> >>> We could provide a mock implementation of IoSession, but I guess it >>> will not look nice (i.e. it violates OO principle). >>> >> Ok, back to your original suggestion :-) >> > > Good to see you back to the track. :D > > >> I think it's a really good idea to remove the IoSession from the signature >> of the encoder/decoder. >> Testing encoders/decoders will also be asier since one won't need a Dummy >> IoSession anymore. >> > > Exactly. That's why I posted the first message in this thread. :) > However, I wanted to make sure if there's any special use case I might > have missed. > > Hey MINA community, your participation is appreciated! > > Thanks in advance, > Trustin > I'd say that the current ProtocolEncoder and ProtocolDecoder are fine. I see no problem with having them depend on IoSession. Instead we could create base classes for our codecs which aren't dependent on IoSession (use Map only) and don't implement ProtocolDecoder/Encoder at all. Then the actual ProtocolDecoder/Encoder implementations would simply extend these base classes and call the base class with IoSession.getAttributesMap() as argument (provided that there is such a method, I don't remember at the moment).
This way the codec could be even more independent from MINA. They don't even implement ProtocolDecoder/Encoder and the child classes would probably be trivial in most cases. WDYT? -- Niklas Therning www.spamdrain.net
