You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@mina.apache.org by MikeD <mc...@yahoo.com> on 2008/04/11 10:55:05 UTC
Protocol Codec Filter encode not called when sending IoBuffer Mina 2.0
Hi all,
I’m new tomina so appologies if this is documented somewhere.
I have aclient and server sending IoBuffer’s back and forth.
And now Iwant to make sure I get one message for each message sent so I implement the ProtocolCodec Filter from the image Server example. (In the encode I want to make a newIoBuffer with the length of the message at the start because my messages areall arbitary length, to allow the decode to do its job)
But encodeis never called, but decode is (soencode never gets to add the 4 bytes of length to the start)
I thenchanged the imageServer/imgaeClient to send IoBuffers instead of ImageRequestObjects and that now never calls encode.
ImageClient.javasendRequest becomes
public void sendRequest(ImageRequestimageRequest) {
if (session == null) {
//noinspectionThrowableInstanceNeverThrown
imageListener.onException(newThrowable("not connected"));
} else {
IoBuffer buf=IoBuffer.allocate(12);
buf.putInt(10);
buf.putInt(20);
buf.putInt(30);
buf.flip();
session.write(buf);
}
}
Am I doingsomething wrong? Why does the type of the message matter for callingencode/decode.
MikeDiskett.
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Re: Protocol Codec Filter encode not called when sending IoBuffer
Mina 2.0
Posted by 이희승 (Trustin Lee) <t...@gmail.com>.
Hi Mike,
If you write an IoBuffer, ProtocolCodecFilter assumes it's already
encoded, and therefore your ProtocolEncoder.encode() is never called.
You could wrap the IoBuffer with some other type.
HTH,
MikeD wrote:
> Hi all,
>
> I’m new tomina so appologies if this is documented somewhere.
>
> I have aclient and server sending IoBuffer’s back and forth.
>
> And now Iwant to make sure I get one message for each message sent so I implement the ProtocolCodec Filter from the image Server example. (In the encode I want to make a newIoBuffer with the length of the message at the start because my messages areall arbitary length, to allow the decode to do its job)
>
> But encodeis never called, but decode is (soencode never gets to add the 4 bytes of length to the start)
>
> I thenchanged the imageServer/imgaeClient to send IoBuffers instead of ImageRequestObjects and that now never calls encode.
>
> ImageClient.javasendRequest becomes
>
>
> public void sendRequest(ImageRequestimageRequest) {
> if (session == null) {
> //noinspectionThrowableInstanceNeverThrown
> imageListener.onException(newThrowable("not connected"));
> } else {
> IoBuffer buf=IoBuffer.allocate(12);
> buf.putInt(10);
> buf.putInt(20);
> buf.putInt(30);
> buf.flip();
> session.write(buf);
> }
> }
>
>
> Am I doingsomething wrong? Why does the type of the message matter for callingencode/decode.
>
>
> MikeDiskett.
>
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
--
Trustin Lee - Principal Software Engineer, JBoss, Red Hat
--
what we call human nature is actually human habit
--
http://gleamynode.net/