All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pkts.packet.impl.AbstractApplicationPacket Maven / Gradle / Ivy

There is a newer version: 3.0.10
Show newest version
/**
 * 
 */
package io.pkts.packet.impl;

import io.pkts.buffer.Buffer;
import io.pkts.buffer.Buffers;
import io.pkts.packet.MACPacket;
import io.pkts.packet.TransportPacket;
import io.pkts.protocol.Protocol;

import java.io.IOException;
import java.io.OutputStream;

/**
 * @author [email protected]
 */
public abstract class AbstractApplicationPacket extends AbstractPacket implements ApplicationPacket {

    private final TransportPacket parent;

    private final Buffer payload;

    /**
     * @param p
     * @param parent
     * @param payload
     */
    public AbstractApplicationPacket(final Protocol p, final TransportPacket parent, final Buffer payload) {
        super(p, parent, payload);
        this.parent = parent;
        this.payload = payload;
    }

    protected TransportPacket getParent() {
        return this.parent;
    }

    /**
     * 
     * {@inheritDoc}
     */
    @Override
    public final long getArrivalTime() {
        return this.parent.getArrivalTime();
    }

    /**
     * 
     * {@inheritDoc}
     */
    @Override
    public void write(final OutputStream out, final Buffer payload) throws IOException {
        final Buffer buffer = this.payload != null ? Buffers.wrap(this.payload, payload) : payload;
        this.parent.write(out, buffer);
    }

    /**
     * 
     * {@inheritDoc}
     */
    @Override
    public abstract ApplicationPacket clone();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy