List of usage examples for io.netty.channel.socket DatagramPacket content
ByteBuf content();
From source file:com.whizzosoftware.hobson.lifx.api.codec.LIFXFrameDecoder.java
License:Open Source License
@Override protected void decode(ChannelHandlerContext context, Object o, List list) throws Exception { if (o instanceof DatagramPacket) { DatagramPacket p = (DatagramPacket) o; ByteBuf buf = p.content(); if (buf.readableBytes() >= 32) { int length = buf.getByte(0) + (buf.getByte(1) << 8); int type = buf.getByte(32) + (buf.getByte(33) << 8); if (buf.readableBytes() >= length) { switch (type) { case DeviceStateService.TYPE: list.add(readDeviceStateService(p.sender(), buf)); break; case LightState.TYPE: list.add(readLightState(p.sender(), buf)); break; case LightStatePower.TYPE: list.add(readLightStatePower(p.sender(), buf)); break; default: logger.debug("Unknown message type received: {}", type); }/*w w w. j av a 2s . com*/ } else { logger.trace("Ignoring datagram with invalid length: {}", length); } } else { logger.trace("Ignoring datagram with invalid length: {}", buf.readableBytes()); } } }
From source file:com.whizzosoftware.hobson.lifx.api.codec.LIFXFrameEncoderTest.java
License:Open Source License
@Test public void testSetColorTest() throws Exception { byte[] expected = { 0x31, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xAC, 0x0D, 0x00, 0x04, 0x00, 0x00 }; LIFXFrameEncoder d = new LIFXFrameEncoder(); List<Object> list = new ArrayList<>(); d.encode(null, new LightSetColor(null, new HSBK(21845, 65535, 65535, 3500), 1024), list); assertEquals(1, list.size());// www . j a v a 2 s . c o m assertTrue(list.get(0) instanceof DatagramPacket); DatagramPacket dp = (DatagramPacket) list.get(0); byte[] b = dp.content().array(); assertEquals(expected.length, b.length); for (int i = 0; i < expected.length; i++) { assertEquals(expected[i], b[i]); } }
From source file:com.whizzosoftware.hobson.ssdp.SSDPInboundHandler.java
License:Open Source License
@Override public void channelRead(ChannelHandlerContext channelHandlerContext, Object o) throws Exception { final DatagramPacket p = (io.netty.channel.socket.DatagramPacket) o; ByteBuf buf = p.content(); byte[] b = new byte[buf.readableBytes()]; buf.readBytes(b);/*www. j a va2 s.c o m*/ final String data = new String(b, 0, b.length, "UTF8"); buf.release(); logger.trace("Received data from {}: {}", p.sender().getHostString(), data); // publish the advertisement try { final SSDPPacket packet = SSDPPacket.createWithData(data); // ignore packets that originated from Hobson if (!p.sender().getAddress().equals(InetAddress.getLocalHost())) { if ("M-SEARCH".equals(packet.getMethod())) { context.executeInEventLoop(new Runnable() { @Override public void run() { try { context.processDiscoveryRequest(p.sender(), packet); } catch (Throwable e) { logger.error("Error processing discovery packet", e); } } }); } else if (packet.getUSN() != null && packet.getLocation() != null) { // execute this in the event loop so we can get on with processing UDP packets as // quickly as possible context.executeInEventLoop(new Runnable() { @Override public void run() { context.publishDeviceAdvertisement( new DeviceAdvertisement.Builder(packet.getUSN(), SSDPPacket.PROTOCOL_ID) .rawData(data).object(packet).build(), false); } }); } else { logger.trace("Ignoring SSDP packet with USN {} and location: {}", packet.getUSN(), packet.getLocation()); } } } catch (Throwable e) { logger.error("Error creating SSDP packet", e); } }
From source file:com.zhaopeng.timeserver.protocol.udp.ChineseProverbClientHandler.java
License:Apache License
public void messageReceived(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception { String response = msg.content().toString(CharsetUtil.UTF_8); if (response.startsWith(": ")) { System.out.println(response); ctx.close();//from w ww . ja va 2 s. c o m } }
From source file:com.zhaopeng.timeserver.protocol.udp.ChineseProverbServerHandler.java
License:Apache License
public void messageReceived(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception { String req = packet.content().toString(CharsetUtil.UTF_8); System.out.println(req);//from www . j a v a 2s.com if ("?".equals(req)) { ctx.writeAndFlush(new DatagramPacket( Unpooled.copiedBuffer(": " + nextQuote(), CharsetUtil.UTF_8), packet.sender())); } }
From source file:de.jackwhite20.apex.udp.pipeline.DatagramDownstreamHandler.java
License:Open Source License
@Override protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket datagramPacket) throws Exception { if (channel.isActive()) { channel.writeAndFlush(new DatagramPacket(datagramPacket.content().retain(), sender)); }/*from w ww. j a va 2 s .c om*/ }
From source file:de.jackwhite20.apex.udp.pipeline.DatagramUpstreamHandler.java
License:Open Source License
@Override protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket datagramPacket) throws Exception { BackendInfo backendInfo = ApexDatagram.getBalancingStrategy().selectBackend("", 0); if (backendInfo == null) { logger.error("Unable to select a backend server. All down?"); return;//from w w w. jav a 2s .c om } // Only copy if there is at least one backend server ByteBuf copy = datagramPacket.content().copy().retain(); Bootstrap bootstrap = new Bootstrap().channel(PipelineUtils.getDatagramChannel()) .handler(new DatagramDownstreamHandler(ctx.channel(), datagramPacket.sender())) .group(ctx.channel().eventLoop()); ChannelFuture channelFuture = bootstrap.bind(0); // Add the traffic shaping handler to the channel pipeline GlobalTrafficShapingHandler trafficShapingHandler = Apex.getInstance().getTrafficShapingHandler(); if (trafficShapingHandler != null) { // The handler needs to be the first handler in the pipeline channelFuture.channel().pipeline().addFirst(trafficShapingHandler); } channelFuture.addListener((ChannelFutureListener) channelFuture1 -> { Channel channel = channelFuture1.channel(); if (channelFuture1.isSuccess()) { channel.writeAndFlush(new DatagramPacket(copy, new InetSocketAddress(backendInfo.getHost(), backendInfo.getPort()))); } else { ChannelUtil.close(channel); } // Release the buffer copy.release(); }); // Keep track of request per second if (connectionsPerSecondTask != null) { connectionsPerSecondTask.inc(); } }
From source file:dorkbox.network.pipeline.discovery.ClientDiscoverHostHandler.java
License:Apache License
@Override protected void channelRead0(final ChannelHandlerContext context, final DatagramPacket message) throws Exception { ByteBuf byteBuf = message.content(); InetAddress remoteAddress = message.sender().getAddress(); if (BroadcastServer.isDiscoveryResponse(byteBuf, remoteAddress, context.channel())) { // the state/ports/etc are set inside the isDiscoveryResponse() method... context.channel().close();//from w ww . j a v a 2 s.c om } }
From source file:dorkbox.network.pipeline.udp.KryoDecoderUdpCrypto.java
License:Apache License
@Override public void decode(ChannelHandlerContext context, DatagramPacket in, List<Object> out) throws Exception { try {//from w w w. j av a2s .c o m Connection_ last = (Connection_) context.pipeline().last(); ByteBuf data = in.content(); Object object = serializationManager.readWithCrypto(last, data, data.readableBytes()); out.add(object); } catch (IOException e) { String message = "Unable to deserialize object"; LoggerFactory.getLogger(this.getClass()).error(message, e); throw new IOException(message, e); } }
From source file:eu.xworlds.util.raknet.RaknetDecoder.java
License:Open Source License
@Override protected void decode(ChannelHandlerContext ctx, DatagramPacket msg, List<Object> out) throws Exception { final ByteBuf buf = msg.content(); buf.order(ByteOrder.BIG_ENDIAN); final byte id = buf.readByte(); final Constructor<? extends RaknetMessage> ctor = this.messages.get(Byte.valueOf(id)); if (ctor == null) { final RaknetMessage result = new InvalidRaknetMessage(id, buf, msg.sender(), msg.recipient()); out.add(result);/*www. jav a 2 s. co m*/ } else { try { final RaknetMessage result = ctor.newInstance(buf, msg.sender(), msg.recipient()); out.add(result); } catch (Exception ex) { final RaknetMessage result = new InvalidRaknetMessage(id, buf, msg.sender(), msg.recipient(), ex); out.add(result); } } }