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();
Source
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