Example usage for io.netty.channel.socket DatagramPacket content

List of usage examples for io.netty.channel.socket DatagramPacket content

Introduction

In this page you can find the example usage for io.netty.channel.socket DatagramPacket content.

Prototype

ByteBuf content();

Source Link

Document

Return the data which is held by this ByteBufHolder .

Usage

From source file:com.streamsets.pipeline.stage.origin.udptokafka.TestKafkaUDPConsumer.java

License:Apache License

@Test
public void testDispatcher() throws Exception {
    Stage.Context context = ContextInfoCreator.createSourceContext("o", false, OnRecordError.TO_ERROR,
            ImmutableList.of("a"));
    UDPConfigBean udpConfigBean = new UDPConfigBean();
    udpConfigBean.ports = ImmutableList.of("2000", "3000");
    udpConfigBean.dataFormat = UDPDataFormat.NETFLOW;
    udpConfigBean.concurrency = 10;//from w  ww  .  ja va  2  s. c  om
    KafkaTargetConfig kafkaTargetConfig = new KafkaTargetConfig();
    kafkaTargetConfig.kafkaProducerConfigs = new HashMap<>();
    kafkaTargetConfig.topic = "topic";
    BlockingQueue<Exception> errorQueue = new ArrayBlockingQueue<>(1);
    KafkaUDPConsumer consumer = new KafkaUDPConsumer(context, udpConfigBean, kafkaTargetConfig, errorQueue);
    consumer = Mockito.spy(consumer);
    try {
        consumer.init();

        DatagramPacket packet = createDatagramPackage(10);

        long now = System.currentTimeMillis();
        KafkaUDPConsumer.Dispatcher dispatcher = consumer.createDispacher(packet);
        Assert.assertTrue(now <= dispatcher.getReceived());
        Assert.assertEquals(packet, dispatcher.getPacket());

        SdcKafkaProducer kafkaProducer = Mockito.mock(SdcKafkaProducer.class);
        Mockito.doReturn(kafkaProducer).when(consumer).getKafkaProducer();
        Mockito.doNothing().when(consumer).releaseKafkaProducer(Mockito.eq(kafkaProducer));

        Assert.assertEquals(0, consumer.kafkaMessagesMeter.getCount());
        Assert.assertEquals(0, consumer.errorPackagesMeter.getCount());
        // successful call with flushEveryMessage TRUE

        dispatcher.call();

        Assert.assertEquals(1, consumer.kafkaMessagesMeter.getCount());
        Assert.assertEquals(0, consumer.errorPackagesMeter.getCount());

        ArgumentCaptor<byte[]> producerCaptor = ArgumentCaptor.forClass(byte[].class);
        Mockito.verify(kafkaProducer, Mockito.times(1)).enqueueMessage(Mockito.eq("topic"),
                producerCaptor.capture(), Mockito.eq(""));
        Mockito.verify(kafkaProducer, Mockito.times(1)).write(null);
        Mockito.verify(consumer).releaseKafkaProducer(Mockito.eq(kafkaProducer));

        UDPMessage message = new UDPMessageDeserializer().deserialize(producerCaptor.getValue());
        Assert.assertEquals(dispatcher.getReceived(), message.getReceived());
        packet.content().resetReaderIndex();
        Assert.assertEquals(packet.content(), message.getDatagram().content());

        Assert.assertTrue(errorQueue.isEmpty());

        // error call
        Assert.assertEquals(0, consumer.errorPackagesMeter.getCount());

        packet = createDatagramPackage(64 * 1024 + 1);

        dispatcher = consumer.createDispacher(packet);

        dispatcher.call();

        Assert.assertEquals(1, consumer.kafkaMessagesMeter.getCount());
        Assert.assertEquals(1, consumer.errorPackagesMeter.getCount());

        Mockito.verify(kafkaProducer, Mockito.times(1)).enqueueMessage(Mockito.eq("topic"),
                Mockito.any(byte[].class), Mockito.eq(""));
        Assert.assertEquals(1, errorQueue.size());
    } finally {
        consumer.destroy();
    }
}

From source file:com.vela.iot.active.netty.coap.CoAPClientHandler.java

License:Apache License

@Override
public void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    String response = msg.content().toString(CharsetUtil.UTF_8);
    //System.out.println(response);
    //ctx.close();
}

From source file:com.whirvis.jraknet.client.RakNetClientHandler.java

License:Open Source License

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    if (msg instanceof DatagramPacket) {
        // Get packet and sender data
        DatagramPacket datagram = (DatagramPacket) msg;
        InetSocketAddress sender = datagram.sender();
        RakNetPacket packet = new RakNetPacket(datagram);

        // If an exception happens it's because of this address
        this.causeAddress = sender;

        // Handle the packet and release the buffer
        client.handleMessage(sender, packet);
        datagram.content().readerIndex(0); // Reset position
        log.debug("Sent packet to client and reset datagram buffer read position");
        client.callEvent(listener -> listener.handleNettyMessage(client, sender, datagram.content()));
        datagram.content().release(); // No longer needed
        log.debug("Sent datagram buffer to client and released it");

        // No exceptions occurred, release the suspect
        this.causeAddress = null;
    }/* www  .j  a  va 2  s.  c o  m*/
}

From source file:com.whirvis.jraknet.discovery.DiscoveryHandler.java

License:Open Source License

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    if (msg instanceof DatagramPacket) {
        // Get packet and sender data
        DatagramPacket datagram = (DatagramPacket) msg;
        InetSocketAddress sender = datagram.sender();
        RakNetPacket packet = new RakNetPacket(datagram);

        // If an exception happens it's because of this address
        this.causeAddress = sender;

        // Check if the address is blocked
        if (blocked.contains(sender.getAddress())) {
            return; // Address blocked
        }// www .j  av  a  2 s  .com

        // Handle the packet and release the buffer
        if (packet.getId() == RakNetPacket.ID_UNCONNECTED_PONG) {
            UnconnectedPong pong = new UnconnectedPong(packet);
            pong.decode();
            if (!pong.failed()) {
                Discovery.updateDiscoveryData(sender, pong);
                log.debug("Sent unconnected pong to discovery system");
            }
        }
        datagram.content().release(); // No longer needed

        // No exceptions occurred, release the suspect
        this.causeAddress = null;
    }
}

From source file:com.whirvis.jraknet.Packet.java

License:Open Source License

/**
 * Creates packet from an existing {@link DatagramPacket}.
 * /*from w w w  .  j a va  2s .c o m*/
 * @param datagram
 *            the {@link DatagramPacket} to read from.
 */
public Packet(DatagramPacket datagram) {
    this(Unpooled.copiedBuffer(datagram.content()));
}

From source file:com.whirvis.jraknet.Packet.java

License:Open Source License

/**
 * Updates the buffer./*from w w w . ja va  2 s  .  co  m*/
 * 
 * @param datagram
 *            the {@link DatagramPacket} whose buffer to read from and write
 *            to.
 * @return the packet.
 * @throws NullPointerException
 *             if the <code>datagram</code> packet is <code>null</code>.
 */
public final Packet setBuffer(DatagramPacket datagram) throws NullPointerException {
    if (datagram == null) {
        throw new NullPointerException("Datagram packet cannot be null");
    }
    return this.setBuffer(datagram.content());
}

From source file:com.whirvis.jraknet.RakNetPacket.java

License:Open Source License

/**
 * Creates a RakNet packet.//from w w  w.  ja  va2 s .c o m
 * 
 * @param datagram
 *            the datagram packet to read from. The datagram must have at
 *            least one byte to be read from for the ID.
 * @throws IllegalArgumentException
 *             if the buffer contained within the datagram has less than
 *             <code>1</code> readable <code>byte</code>.
 * @see #RakNetPacket(ByteBuf)
 */
public RakNetPacket(DatagramPacket datagram) throws IllegalArgumentException {
    this(datagram.content());
}

From source file:com.whirvis.jraknet.RakNetPacket.java

License:Open Source License

/**
 * Updates the buffer.//from  ww w.j a  va  2  s .c o m
 * 
 * @param datagram
 *            the {@link DatagramPacket} whose buffer to read from and write
 *            to.
 * @param updateId
 *            <code>true</code> if the ID should be updated,
 *            <code>false</code> otherwise.
 * @return the packet.
 * @throws NullPointerException
 *             if the <code>datagram</code> packet is <code>null</code>.
 * @throws IndexOutOfBoundsException
 *             if <code>updateId</code> is <code>true</code> and the new
 *             buffer has less than <code>1</code> readable
 *             <code>byte</code>.
 * @see #setBuffer(DatagramPacket)
 */
public final RakNetPacket setBuffer(DatagramPacket datagram, boolean updateId)
        throws NullPointerException, IndexOutOfBoundsException {
    if (datagram == null) {
        throw new NullPointerException("Datagram packet cannot be null");
    }
    return this.setBuffer(datagram.content(), updateId);
}

From source file:com.whirvis.jraknet.server.RakNetServerHandler.java

License:Open Source License

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof DatagramPacket) {
        // Get packet and sender data
        DatagramPacket datagram = (DatagramPacket) msg;
        InetSocketAddress sender = datagram.sender();
        RakNetPacket packet = new RakNetPacket(datagram);

        // If an exception happens it's because of this address
        this.causeAddress = sender;

        // Check if address is blocked
        if (this.isAddressBlocked(sender.getAddress())) {
            BlockedAddress status = blocked.get(sender.getAddress());
            if (!status.shouldUnblock()) {
                datagram.content().release(); // No longer needed
                return; // Address still blocked
            }/*  ww w  . j a v a2 s.  com*/
            this.unblockAddress(sender.getAddress());
        }

        // Handle the packet and release the buffer
        server.handleMessage(sender, packet);
        datagram.content().readerIndex(0); // Reset position
        log.debug("Sent packet to server and reset datagram buffer read position");
        server.callEvent(listener -> listener.handleNettyMessage(server, sender, datagram.content()));
        datagram.content().release(); // No longer needed
        log.debug("Sent datagram buffer to server and released it");

        // No exceptions occurred, release the suspect
        this.causeAddress = null;
    }
}

From source file:com.whizzosoftware.foscam.camera.discovery.DatagramToByteBufHandler.java

License:Open Source License

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception {
    // increment the datagram's byte buffer reference count and pass it along to the next part of the pipeline
    ctx.fireChannelRead(packet.content().retain());
}