Home / Function/ handleTcpPacket() — netty Function Reference

handleTcpPacket() — netty Function Reference

Architecture documentation for the handleTcpPacket() function in PcapWriteHandler.java from the netty codebase.

Function java Buffer Allocators calls 3 called by 1

Entity Profile

Dependency Diagram

graph TD
  320d8848_c045_6f15_fc6c_77ec890cc385["handleTcpPacket()"]
  59f0289b_ecfd_de3c_3397_4cf08e2047d1["PcapWriteHandler"]
  320d8848_c045_6f15_fc6c_77ec890cc385 -->|defined in| 59f0289b_ecfd_de3c_3397_4cf08e2047d1
  56402456_64d5_e1dd_9d6f_c6dfc0490e45["handleTCP()"]
  56402456_64d5_e1dd_9d6f_c6dfc0490e45 -->|calls| 320d8848_c045_6f15_fc6c_77ec890cc385
  bbfbdddd_98c4_8181_5429_a45dee375189["completeTCPWrite()"]
  320d8848_c045_6f15_fc6c_77ec890cc385 -->|calls| bbfbdddd_98c4_8181_5429_a45dee375189
  e9ea0d11_37bd_0e70_760b_8d049dd713be["logTCP()"]
  320d8848_c045_6f15_fc6c_77ec890cc385 -->|calls| e9ea0d11_37bd_0e70_760b_8d049dd713be
  89999839_bf9a_67ff_18ff_46d98e911624["incrementUintSegmentNumber()"]
  320d8848_c045_6f15_fc6c_77ec890cc385 -->|calls| 89999839_bf9a_67ff_18ff_46d98e911624
  style 320d8848_c045_6f15_fc6c_77ec890cc385 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/pcap/PcapWriteHandler.java lines 365–421

    private void handleTcpPacket(ChannelHandlerContext ctx, ByteBuf packet, boolean isWriteOperation,
                                 ByteBufAllocator byteBufAllocator) {
        ByteBuf tcpBuf = byteBufAllocator.buffer();
        int bytes = packet.readableBytes();

        try {
            if (isWriteOperation) {
                final InetSocketAddress srcAddr;
                final InetSocketAddress dstAddr;
                if (isServerPipeline) {
                    srcAddr = handlerAddr;
                    dstAddr = initiatorAddr;
                } else {
                    srcAddr = initiatorAddr;
                    dstAddr = handlerAddr;
                }

                TCPPacket.writePacket(tcpBuf, packet, sendSegmentNumber, receiveSegmentNumber,
                                      srcAddr.getPort(),
                                      dstAddr.getPort(), TCPPacket.TCPFlag.ACK);
                completeTCPWrite(srcAddr, dstAddr, tcpBuf, byteBufAllocator, ctx);
                logTCP(true, bytes, sendSegmentNumber, receiveSegmentNumber, srcAddr, dstAddr, false);

                sendSegmentNumber = incrementUintSegmentNumber(sendSegmentNumber, bytes);

                TCPPacket.writePacket(tcpBuf, null, receiveSegmentNumber, sendSegmentNumber, dstAddr.getPort(),
                                      srcAddr.getPort(), TCPPacket.TCPFlag.ACK);
                completeTCPWrite(dstAddr, srcAddr, tcpBuf, byteBufAllocator, ctx);
                logTCP(true, bytes, sendSegmentNumber, receiveSegmentNumber, dstAddr, srcAddr, true);
            } else {
                final InetSocketAddress srcAddr;
                final InetSocketAddress dstAddr;
                if (isServerPipeline) {
                    srcAddr = initiatorAddr;
                    dstAddr = handlerAddr;
                } else {
                    srcAddr = handlerAddr;
                    dstAddr = initiatorAddr;
                }

                TCPPacket.writePacket(tcpBuf, packet, receiveSegmentNumber, sendSegmentNumber,
                                      srcAddr.getPort(),
                                      dstAddr.getPort(), TCPPacket.TCPFlag.ACK);
                completeTCPWrite(srcAddr, dstAddr, tcpBuf, byteBufAllocator, ctx);
                logTCP(false, bytes, receiveSegmentNumber, sendSegmentNumber, srcAddr, dstAddr, false);

                receiveSegmentNumber = incrementUintSegmentNumber(receiveSegmentNumber, bytes);

                TCPPacket.writePacket(tcpBuf, null, sendSegmentNumber, receiveSegmentNumber, dstAddr.getPort(),
                                      srcAddr.getPort(), TCPPacket.TCPFlag.ACK);
                completeTCPWrite(dstAddr, srcAddr, tcpBuf, byteBufAllocator, ctx);
                logTCP(false, bytes, sendSegmentNumber, receiveSegmentNumber, dstAddr, srcAddr, true);
            }
        } finally {
            tcpBuf.release();
        }
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does handleTcpPacket() do?
handleTcpPacket() is a function in the netty codebase, defined in handler/src/main/java/io/netty/handler/pcap/PcapWriteHandler.java.
Where is handleTcpPacket() defined?
handleTcpPacket() is defined in handler/src/main/java/io/netty/handler/pcap/PcapWriteHandler.java at line 365.
What does handleTcpPacket() call?
handleTcpPacket() calls 3 function(s): completeTCPWrite, incrementUintSegmentNumber, logTCP.
What calls handleTcpPacket()?
handleTcpPacket() is called by 1 function(s): handleTCP.

Analyze Your Own Codebase

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

Try Supermodel Free