On 10/1/07, James Apfel <[EMAIL PROTECTED]> wrote: > Hi, > > my ProtocolEncoder encodes a Message into many ByteBuffer(s) and I wrap them > currently into a single ByteBuffer which I'm writing to > ProtocolEncoderOutput. I'm however wondering if it's OK to write the > ByteBuffer(s) straight to ProtocolEncoderOutput? I'm concerned about > Threading issues (i.e. does MINA preserve the writing order of the > ByteBuffers if I call IoSession.write(Message) from different Threads)!?
Every session has its internal queue to maintain the sequence of write operations. Therefore, you are OK to call ProtocolEncoderOutput.write() many times in a single call. Of course, you might need synchronization if you implemented your own IoFilter that employs your own thread model. As long as you use the default ExecutorFilter (or no ExecutorFilter), it's safe. Please note three write() operation means three SocketChannl.write calls. If you want just one call, you can call mergeAll() method in ProtocolEncoderOutput. HTH, Trustin -- what we call human nature is actually human habit -- http://gleamynode.net/ -- PGP Key ID: 0x0255ECA6
