Hello Robin,

On 4/27/07, Robin Batra <[EMAIL PROTECTED]> wrote:

Hi !!!

I have a little problem.
I have written my own MessageEncoder for encoding my messages

For that in Encoder in encode function i use

public void encode(IoSession session, Object message,
ProtocolEncoderOutput
out)
   throws Exception
{
  Message msg = (Message) message;
  ByteBuffer buf = ByteBuffer.allocate(20);
  buf.setAutoExpand(true);


  //Add data to ByteBuffer
  buf.putString(msg.getFromID(), charsetEncoder); // FromID is String and
Encoder is UTF-8
  buf.putString(msg.getToID(), charsetEncoder ); // ToID is String and
Encoder is UTF-8
  buf.putString(msg.getTimeStamp(), charsetEncoder ); // TimeStamp is
String
and Encoder is UTF-8
  buf.putInt(msg.getLength());
  buf.put(msg.getData());

  buf.flip();
  out.write(buf);

}



Whenever i use my decoder to decode the same message it gives me all the
strings in the first call itself.

That is when i call

buf.getString(charsetDecoder); it gives me all FromID + ToID + TimeStamp
and
other calls to getString returns empty strings.

What should i do


rtfm: read the fine manual :

http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html#getString(java.nio.charset.CharsetDecoder)
http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html#putString(java.lang.CharSequence,%20java.nio.charset.CharsetEncoder)

"Writes the content of in into this buffer using the specified encoder. This
method doesn't terminate string with NUL. You have to do it by yourself."

and how to rectify this problem.


try this:

buf.putString(msg.getFromID(), charsetEncoder);
buf.put((byte)0x00);
buf.putString(msg.getToID(), charsetEncoder );
buf.put((byte)0x00);
buf.putString(msg.getTimeStamp(), charsetEncoder );
buf.put((byte)0x00);
buf.putInt(msg.getLength());
buf.put(msg.getData());

Maarten


Thanks and Regards,

Robin

Reply via email to