You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@mina.apache.org by jose vilmar estacio de souza <vi...@informal.com.br> on 2010/01/26 03:02:47 UTC
help writing my first codec
Hi all,
I need to write a codec to encode/decode a message and would not want to
reinvent the wheel.
The message sent by the client connection has the following layout:
1: Header with a fixed length of 1444 bytes.
2: Data with a variable length. The length of data is stored in the
position 67 of header with 6 bytes.
What I'm thinking is to do as follows:
1: Create a class that extends CumulativeProtocolDecoder.
2: In the doDecode method implement the following logic:
if (in.remaining() < SZ_HEADER) { return false;}
int t = sizeOfDataFromHeader(in);
if (in.remaining() < SZ_HEADER+t) { return false;}
out.write(new Message(in));
return true;
I would like to ask two questions:
Is there anything ready so I do not have to implement anything?
If not, what I'm doing is correct or should I implement it differently?
Thanks
-
[]S José Vilmar Estácio de Souza
http://www.informal.com.br
Msn:vilmar@informal.com.br Skype:jvilmar
Twitter: http://www.twitter.com/jvesouza
Phone: +55 21-2555-2650 Cel: +55 21-8868-0859
Re: help writing my first codec
Posted by Ashish <pa...@gmail.com>.
On Tue, Jan 26, 2010 at 7:32 AM, jose vilmar estacio de souza
<vi...@informal.com.br> wrote:
> Hi all,
> I need to write a codec to encode/decode a message and would not want to
> reinvent the wheel.
> The message sent by the client connection has the following layout:
> 1: Header with a fixed length of 1444 bytes.
> 2: Data with a variable length. The length of data is stored in the
> position 67 of header with 6 bytes.
>
> What I'm thinking is to do as follows:
> 1: Create a class that extends CumulativeProtocolDecoder.
> 2: In the doDecode method implement the following logic:
>
> if (in.remaining() < SZ_HEADER) { return false;}
> int t = sizeOfDataFromHeader(in);
> if (in.remaining() < SZ_HEADER+t) { return false;}
> out.write(new Message(in));
> return true;
>
> I would like to ask two questions:
> Is there anything ready so I do not have to implement anything?
I am afraid, we just have examples
> If not, what I'm doing is correct or should I implement it differently?
Its fine just u need to take care of one situation. Since u store
bytes in session, you may get OOM, if you have too many client and too
much of data.
Can use file mapped buffer, if there is a need.
Rest is good to go.. Good Luck!
> Thanks
>
> -
> []S José Vilmar Estácio de Souza
> http://www.informal.com.br
> Msn:vilmar@informal.com.br Skype:jvilmar
> Twitter: http://www.twitter.com/jvesouza
> Phone: +55 21-2555-2650 Cel: +55 21-8868-0859
>
>
--
thanks
ashish
Blog: http://www.ashishpaliwal.com/blog
My Photo Galleries: http://www.pbase.com/ashishpaliwal