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:net.marfgamer.jraknet.RakNetPacket.java

License:Open Source License

/**
 * Constructs a <code>RakNetPacket</code> that reads from and writes to the
 * specified <code>DatagramPacket</code>. On instantiation, the first byte
 * of the datagram will be read and set as the ID.
 * /*w  ww.  ja v a  2s . c o m*/
 * @param datagram
 *            the <code>DatagramPacket</code> to read from and write to.
 */
public RakNetPacket(DatagramPacket datagram) {
    this(datagram.content());
}

From source file:net.marfgamer.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;

        // Is the sender blocked?
        if (this.addressBlocked(sender.getAddress())) {
            BlockedAddress status = blocked.get(sender.getAddress());
            if (status.getTime() <= BlockedAddress.PERMANENT_BLOCK) {
                return; // Permanently blocked
            }/*ww w .java  2 s.  com*/
            if (System.currentTimeMillis() - status.getStartTime() < status.getTime()) {
                return; // Time hasn't expired
            }
            this.unblockAddress(sender.getAddress());
        }

        // Handle the packet and release the buffer
        server.handleMessage(packet, sender);
        datagram.content().readerIndex(0); // Reset position
        RakNetLogger.debug(loggerName, "Sent packet to server and reset Datagram buffer read position");
        server.getListener().handleNettyMessage(datagram.content(), sender);
        datagram.content().release(); // No longer needed
        RakNetLogger.debug(loggerName, "Sent Datagram buffer to server and released it");

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

From source file:netty.protocol.udp.ChineseProverbClientHandler.java

License:Apache License

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    String response = msg.content().toString(CharsetUtil.UTF_8);
    if (response.startsWith(": ")) {
        System.out.println(response);
        ctx.close();/*ww w  . j a v  a2s.  c o m*/
    }
}

From source file:netty.protocol.udp.ChineseProverbServerHandler.java

License:Apache License

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    String req = msg.content().toString(CharsetUtil.UTF_8);
    System.out.println(req);/*w ww. java 2  s.c  om*/
    if ("?".equals(req)) {
        ctx.writeAndFlush(new DatagramPacket(
                Unpooled.copiedBuffer(": " + nextQuote(), CharsetUtil.UTF_8), msg.sender()));
    }
}

From source file:nz.co.fortytwo.signalk.server.CamelUdpNettyHandler.java

License:Open Source License

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception {
    String request = packet.content().toString(CharsetUtil.UTF_8);
    if (logger.isDebugEnabled())
        logger.debug("Sender " + packet.sender() + " sent request:" + request);

    if (!sessionList.inverse().containsKey(packet.sender())) {
        String session = UUID.randomUUID().toString();
        String localAddress = ctx.channel().localAddress().toString();
        String remoteAddress = ctx.channel().remoteAddress().toString();
        SubscriptionManagerFactory.getInstance().add(session, session, outputType, localAddress, remoteAddress);
        sessionList.put(session, packet.sender());
        if (logger.isDebugEnabled())
            logger.debug("Added Sender " + packet.sender() + ", session:" + session);
        ctx.channel()//  ww w.  j  a  v  a 2  s .  c om
                .writeAndFlush(new DatagramPacket(
                        Unpooled.copiedBuffer(Util.getWelcomeMsg().toString() + "\r\n", CharsetUtil.UTF_8),
                        packet.sender()));
    }

    Map<String, Object> headers = getHeaders(sessionList.inverse().get(packet.sender()));
    producer.sendBodyAndHeaders(request, headers);
}

From source file:org.apache.camel.component.netty4.codec.DatagramPacketDecoder.java

License:Apache License

@Override
protected void decode(ChannelHandlerContext ctx, DatagramPacket msg, List<Object> out) throws Exception {
    // decode the DatagramPackage to AddressedEnvelope
    DefaultAddressedEnvelope<Object, InetSocketAddress> addressEvelop = new DefaultAddressedEnvelope<Object, InetSocketAddress>(
            msg.content().retain(), msg.recipient(), msg.sender());
    out.add(addressEvelop);//from w  w w . jav a  2s.  c o m

}

From source file:org.apache.directory.server.dhcp.netty.Dhcp6Handler.java

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    if (LOG.isDebugEnabled()) {
        LOG.debug("Incomming DHCP : {}, from: {}", ByteBufUtil.hexDump(msg.content()), msg.sender());
    }//w  w w  .j a  va  2  s.co m

    final Dhcp6Message incommingMsg;
    try {
        incommingMsg = dhcp6MessageDecoder.decode(msg.content().nioBuffer());
    } catch (final Dhcp6Exception.UnknownMsgException e) {
        LOG.warn("Unknown DHCP message type: {}. Ignoring", ByteBufUtil.hexDump(msg.content()), e);
        return;
    }

    final Optional<Dhcp6Message> reply = dhcpService
            .getReplyFor(new Dhcp6RequestContext(msg.sender().getAddress()), incommingMsg);

    if (reply.isPresent()) {
        LOG.debug("Responding with message: {}", reply.get());

        // TODO what size to allocate the buffer to ?
        ByteBuf buf = ctx.alloc().buffer(1024);
        ByteBuffer buffer = buf.nioBuffer(buf.writerIndex(), buf.writableBytes());
        dhcp6MessageEncoder.encode(buffer, reply.get());
        buffer.flip();
        buf.writerIndex(buf.writerIndex() + buffer.remaining());
        DatagramPacket packet = new DatagramPacket(buf, msg.sender());
        ctx.write(packet);
    } else {
        LOG.warn("No response from DHCP service received for: {}. Ignoring.", incommingMsg);
    }
}

From source file:org.apache.directory.server.dhcp.netty.DhcpHandler.java

@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    DhcpMessage request = decoder.decode(msg.content().nioBuffer());

    DhcpRequestContext context = interfaceManager.newRequestContext(
            (InetSocketAddress) ctx.channel().localAddress(), msg.sender(), msg.recipient(), request);
    if (context == null) {
        debug("IGNQUERY", msg.sender(), msg.recipient(), request);
        return;/* ww  w .  j a va 2 s  . c  o  m*/
    }
    // debug("READ", msg.sender(), msg.recipient(), request);

    MDCUtils.init(context, request);
    try {
        DhcpMessage reply = dhcpService.getReplyFor(context, request);
        if (reply == null) {
            debug("NOREPLY", msg.sender(), msg.recipient(), request);
            return;
        }

        InterfaceAddress localAddress = interfaceManager.getResponseInterface(request.getRelayAgentAddress(),
                request.getCurrentClientAddress(), msg.sender().getAddress(), reply);
        if (localAddress == null) {
            debug("NOIFACE", msg.recipient(), msg.sender(), reply);
            return;
        }

        debug("READ", msg.sender(), msg.recipient(), request);

        InetSocketAddress isa = DhcpInterfaceUtils.determineMessageDestination(request, reply, localAddress,
                msg.sender().getPort());

        ByteBuf buf = ctx.alloc().buffer(1024);
        ByteBuffer buffer = buf.nioBuffer(buf.writerIndex(), buf.writableBytes());
        encoder.encode(buffer, reply);
        buffer.flip();
        buf.writerIndex(buf.writerIndex() + buffer.remaining());
        DatagramPacket packet = new DatagramPacket(buf, isa);
        debug("WRITE", packet.sender(), packet.recipient(), reply);
        ctx.write(packet, ctx.voidPromise());
    } finally {
        MDCUtils.fini();
    }
}

From source file:org.apache.kerby.kerberos.kdc.impl.NettyKdcUdpServerHandler.java

License:Apache License

@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, DatagramPacket datagramPacket)
        throws Exception {
    ByteBuf byteBuf = datagramPacket.content();
    byte[] msgBytes = new byte[byteBuf.readableBytes()];
    byteBuf.readBytes(msgBytes);//from ww  w. ja v  a 2s  .  c om
    ByteBuffer requestMessage = ByteBuffer.wrap(msgBytes);
    InetSocketAddress clientAddress = datagramPacket.sender();

    boolean isTcp = false;
    try {
        ByteBuffer responseMessage = myKdcHandler.handleMessage(requestMessage, isTcp,
                clientAddress.getAddress());
        channelHandlerContext
                .writeAndFlush(new DatagramPacket(Unpooled.wrappedBuffer(responseMessage), clientAddress));
    } catch (Exception e) {
        LOG.error("Error occurred while processing request:" + e.getMessage());
    }
}

From source file:org.beykery.wormhole.WormRegistry.java

License:Apache License

/**
 * message//w  w w.  jav a2  s .  c o  m
 *
 * @param dp
 */
private void onMessage(final DatagramPacket dp) {
    this.workers.execute(new Runnable() {
        @Override
        public void run() {
            try {
                ByteBuf bb = dp.content();
                int cmd = bb.readByte();
                switch (cmd) {
                case 0://regist
                    String name = readUtf(bb);
                    String inner = readUtf(bb);
                    InetSocketAddress sender = dp.sender();
                    WormRegistry.this.addEndpoint(new Endpoint(name, inner, sender));
                    break;
                case 1://check
                    name = readUtf(bb);

                }
            } catch (Exception ex) {
                //do nothing
            }
        }

        private String readUtf(ByteBuf bb) throws UnsupportedEncodingException {
            int len = bb.readInt();
            byte[] c = new byte[len];
            bb.readBytes(c);
            return new String(c, "utf-8");
        }
    });
}