List of usage examples for io.netty.channel.socket DatagramPacket content
ByteBuf content();
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()); }