Example usage for io.vertx.core.datagram DatagramPacket data

List of usage examples for io.vertx.core.datagram DatagramPacket data

Introduction

In this page you can find the example usage for io.vertx.core.datagram DatagramPacket data.

Prototype

Buffer data();

Source Link

Document

Returns the data of the io.vertx.core.datagram.DatagramPacket

Usage

From source file:org.hawkular.metrics.clients.ptrans.collectd.packet.CollectdPacketDecoder.java

License:Apache License

public CollectdPacket decode(DatagramPacket packet) {
    long start = System.currentTimeMillis();
    ByteBuf content = packet.data().getByteBuf();
    List<Part<?>> parts = new ArrayList<>(100);
    for (;;) {//from ww w .j a v a 2s .co m
        if (!hasReadableBytes(content, 4)) {
            break;
        }
        short partTypeId = content.readShort();
        PartType partType = PartType.findById(partTypeId);
        int partLength = content.readUnsignedShort();
        int valueLength = partLength - 4;
        if (!hasReadableBytes(content, valueLength)) {
            break;
        }
        if (partType == null) {
            content.skipBytes(valueLength);
            continue;
        }
        Part<?> part;
        switch (partType) {
        case HOST:
        case PLUGIN:
        case PLUGIN_INSTANCE:
        case TYPE:
        case INSTANCE:
            part = new StringPart(partType, readStringPartContent(content, valueLength));
            break;
        case TIME:
        case TIME_HIGH_RESOLUTION:
        case INTERVAL:
        case INTERVAL_HIGH_RESOLUTION:
            part = new NumericPart(partType, readNumericPartContent(content));
            break;
        case VALUES:
            part = new ValuePart(partType, readValuePartContent(content, valueLength));
            break;
        default:
            part = null;
            content.skipBytes(valueLength);
        }
        //noinspection ConstantConditions
        if (part != null) {
            log.tracef("Decoded part: %s", part);
            parts.add(part);
        }
    }

    if (log.isTraceEnabled()) {
        long stop = System.currentTimeMillis();
        log.tracef("Decoded datagram in %d ms", stop - start);
    }

    if (parts.size() > 0) {
        return new CollectdPacket(parts);
    } else {
        log.trace("No parts decoded, no CollectdPacket output");
        return null;
    }
}