Home / Class/ PcapWriter Class — netty Architecture

PcapWriter Class — netty Architecture

Architecture documentation for the PcapWriter class in PcapWriter.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19["PcapWriter"]
  c09eab2d_7cfa_1e5c_c81f_994897104665["PcapWriter.java"]
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19 -->|defined in| c09eab2d_7cfa_1e5c_c81f_994897104665
  91292e45_7062_e8b5_a73c_948f890ce89d["PcapWriter()"]
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19 -->|method| 91292e45_7062_e8b5_a73c_948f890ce89d
  935ec32c_7a33_ef96_9426_94c9d36e7493["writePacket()"]
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19 -->|method| 935ec32c_7a33_ef96_9426_94c9d36e7493
  ff233296_db54_5cdf_4aa7_c1115b26ce9b["String()"]
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19 -->|method| ff233296_db54_5cdf_4aa7_c1115b26ce9b
  8aedf1e4_e467_1397_540d_ff8aecfd29f4["close()"]
  3b90a1f4_89b3_b3f6_603e_e2f554e8ff19 -->|method| 8aedf1e4_e467_1397_540d_ff8aecfd29f4

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/pcap/PcapWriter.java lines 26–112

final class PcapWriter implements Closeable {

    /**
     * Logger
     */
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(PcapWriter.class);

    private final PcapWriteHandler pcapWriteHandler;

    /**
     * Reference declared so that we can use this as mutex in clean way.
     */
    private final OutputStream outputStream;

    /**
     * This uses {@link OutputStream} for writing Pcap data.
     *
     * @throws IOException If {@link OutputStream#write(byte[])} throws an exception
     */
    PcapWriter(PcapWriteHandler pcapWriteHandler) throws IOException {
        this.pcapWriteHandler = pcapWriteHandler;
        outputStream = pcapWriteHandler.outputStream();

        // If OutputStream is not shared then we have to write Global Header.
        if (pcapWriteHandler.writePcapGlobalHeader() && !pcapWriteHandler.sharedOutputStream()) {
            PcapHeaders.writeGlobalHeader(pcapWriteHandler.outputStream());
        }
    }

    /**
     * Write Packet in Pcap OutputStream.
     *
     * @param packetHeaderBuf Packer Header {@link ByteBuf}
     * @param packet          Packet
     * @throws IOException If {@link OutputStream#write(byte[])} throws an exception
     */
    void writePacket(ByteBuf packetHeaderBuf, ByteBuf packet) throws IOException {
        if (pcapWriteHandler.state() == State.CLOSED) {
            logger.debug("Pcap Write attempted on closed PcapWriter");
        }

        long timestamp = System.currentTimeMillis();

        PcapHeaders.writePacketHeader(
                packetHeaderBuf,
                (int) (timestamp / 1000L),
                (int) (timestamp % 1000L * 1000L),
                packet.readableBytes(),
                packet.readableBytes()
        );

        if (pcapWriteHandler.sharedOutputStream()) {
            synchronized (outputStream) {
                packetHeaderBuf.readBytes(outputStream, packetHeaderBuf.readableBytes());
                packet.readBytes(outputStream, packet.readableBytes());
            }
        } else {
            packetHeaderBuf.readBytes(outputStream, packetHeaderBuf.readableBytes());
            packet.readBytes(outputStream, packet.readableBytes());
        }
    }

    @Override
    public String toString() {
        return "PcapWriter{" +
                "outputStream=" + outputStream +
                '}';
    }

    @Override
    public void close() throws IOException {
        if (pcapWriteHandler.state() == State.CLOSED) {
            logger.debug("PcapWriter is already closed");
        } else {
            if (pcapWriteHandler.sharedOutputStream()) {
                synchronized (outputStream) {
                    outputStream.flush();
                }
            } else {
                outputStream.flush();
                outputStream.close();

Frequently Asked Questions

What is the PcapWriter class?
PcapWriter is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/pcap/PcapWriter.java.
Where is PcapWriter defined?
PcapWriter is defined in handler/src/main/java/io/netty/handler/pcap/PcapWriter.java at line 26.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free