Hi,

no I don't use ByteBuffer as body type. The easiest example what I did is
to create the following route:
    <from uri="mina:udp://localhost:2002?sync=false"/>
    <to uri="mina:udp://localhost:2000?sync=false"/>

Just route it from on port to another port on the same host. Nothing
between it.


The MinaUdpProtocolCodecFactory on the consumer side decodes it from an udp
datagram to a byte[].

    byte[] bytes = context.getTypeConverter().convertTo(byte[].class, in);

On the provider side where it gets back to the wire it gets converted to a
string:

    String value = context.getTypeConverter().convertTo(String.class,
message);

and then set to the ByteBuffer with the given charset.

The result is that the original datagram is not anymore valid. What I
thought what would be right is, to not convert it to a String but leave it
as a byte array and put it into the ByteBuffer.

I know  of course that I can create an own codec. I do it currently to get
the route work but I thought it would be not necessary to just route UDP
datagramms.

Cheers,
Thomas


On Fri, Apr 19, 2013 at 8:43 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> You can always create your own codec and use that.
>
> And do you really use ByteBuffer as the body type? That is a Mina type?
>
> What we can do is to check the type of the body. If its already a
> ByteBuffer then use it as is.
> Otherwise we can try converting to byte[] and String. Which we need to
> create the ByteBuffer.
>
>
>
>
>
> On Thu, Apr 18, 2013 at 5:17 PM, Thomas Termin <thomas.ter...@gmail.com>
> wrote:
> > Hi Claus,
> >
> > yeah it is the camel-mina. Sorry.
> >
> > We could make this configurable within the camel uri. Something like
> > encode=raw or whatever. Let me know if I should provide a fix/patch or
> > whatever.
> >
> > Cheers,
> > Thomas
> >
> >
> > On Thu, Apr 18, 2013 at 3:29 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >
> >> Hi
> >>
> >> Yeah it should probably be byte[] instead of a String.
> >>
> >> And I assume you refer to camel-mina ?
> >>
> >> On Thu, Apr 18, 2013 at 1:35 PM, Thomas Termin <thomas.ter...@gmail.com
> >
> >> wrote:
> >> > Hello,
> >> >
> >> > is there a special reason, that the MinaUdpProtocolCodecFactory encode
> >> > method always try to convert the message body to a string? Is there a
> way
> >> > to avoid the conversion to a String? I would need the falilback method
> >> > which is a conversion to a ByteBuffer. It would be nice to have that
> >> > configurable.
> >> >
> >> > String value = context.getTypeConverter().convertTo(String.class,
> >> message);
> >> > if (value != null) {
> >> >   ByteBuffer answer =
> >> > ByteBuffer.allocate(value.length()).setAutoExpand(false);
> >> >   answer.putString(value, encoder);
> >> >   return answer;
> >> > }
> >> >
> >> > // failback to use a byte buffer converter
> >> > return context.getTypeConverter().mandatoryConvertTo(ByteBuffer.class,
> >> > message);
> >> >
> >> > Cheers,
> >> > Thomas
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> Red Hat, Inc.
> >> FuseSource is now part of Red Hat
> >> Email: cib...@redhat.com
> >> Web: http://fusesource.com
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.com
> >> Author of Camel in Action: http://www.manning.com/ibsen
> >>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Email: cib...@redhat.com
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>

Reply via email to