user2709292
user2709292

Reputation: 1

Netty UDP compatible decoders

Which decoders are safe to extend in use with a Non Blocking Datagram Channel? Essentially, I need to go from *ByteBuff to String, which I then have code that will turn that string into an object. Also, this would need to be accomplished with a decoder. From object to string and finally back to a *ByteBuff.

I have tried extending ByteToMessageDecoder, but it seems that Netty never invokes the decode method. So I am not sure if this is mainly a problem with the Datagram Channel or a problem with my principle understanding of decoders...

Just in case here is some of my code

Initializer:

public class Initializer extends ChannelInitializer<NioDatagramChannel> {

    private SimpleChannelInboundHandler<Packet> sipHandler;

    public Initializer(SimpleChannelInboundHandler<Packet> handler) {
        sipHandler = handler;
    }

    @Override
    protected void initChannel(NioDatagramChannel chan) throws Exception {    
        ChannelPipeline pipe = chan.pipeline();    
        pipe.addLast("decoder", new SipDecoder());    
        pipe.addLast("handler", sipHandler);    
        pipe.addLast("encoder", new SipEncoder());
    }

}

Beginning of my Decoder:

public class SipDecoder extends ByteToMessageDecoder {

    private Packet sip;    

    @Override
    protected void decode(ChannelHandlerContext context, ByteBuf byteBuf, List<Object> objects) throws Exception {   
        System.out.println("got hit...");    
        String data = new String(byteBuf.array());    
        sip = new Packet();    
        // [...]
    }

}

Upvotes: 0

Views: 2097

Answers (1)

Norman Maurer
Norman Maurer

Reputation: 23567

To handle DatagramPacket's you need to use MessageToMessageDecoder as ByteToMessageDecoder only works for ByteBuf.

Upvotes: 2

Related Questions