Home / Class/ AbstractMixedHttpData Class — netty Architecture

AbstractMixedHttpData Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  98233652_bb29_50f3_e596_2812fd02b555["AbstractMixedHttpData"]
  ae41176f_a35b_90ab_feaf_21c893575980["AbstractMixedHttpData.java"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|defined in| ae41176f_a35b_90ab_feaf_21c893575980
  ef03dc53_6432_ebfc_b8fb_c42349a04dd2["AbstractMixedHttpData()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| ef03dc53_6432_ebfc_b8fb_c42349a04dd2
  a5ae3919_a0c3_1a6b_dc4e_b4679c5d16a0["D()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| a5ae3919_a0c3_1a6b_dc4e_b4679c5d16a0
  52a6738c_5f09_40ac_3200_094693174d86["getMaxSize()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| 52a6738c_5f09_40ac_3200_094693174d86
  f0a89387_c632_6833_56b4_33054643ce56["setMaxSize()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| f0a89387_c632_6833_56b4_33054643ce56
  e9844d52_c7f7_ef1a_6e7d_8fa7ad1deef7["ByteBuf()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| e9844d52_c7f7_ef1a_6e7d_8fa7ad1deef7
  21bbd55c_2ca6_858e_dd09_5ab2962d98be["checkSize()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| 21bbd55c_2ca6_858e_dd09_5ab2962d98be
  f76ac80e_9c6c_c003_4f20_2056bf0af629["definedLength()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| f76ac80e_9c6c_c003_4f20_2056bf0af629
  a3ac7357_9eac_85b0_87c7_09ae5f9436b7["Charset()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| a3ac7357_9eac_85b0_87c7_09ae5f9436b7
  cc052e8d_9190_6eb1_403c_04305cd01d32["String()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| cc052e8d_9190_6eb1_403c_04305cd01d32
  db6eda06_23cf_bb53_0685_c86b82aea9a1["addContent()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| db6eda06_23cf_bb53_0685_c86b82aea9a1
  c4d96371_3d1e_00af_5f4d_fff3a580912c["deallocate()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| c4d96371_3d1e_00af_5f4d_fff3a580912c
  42016ac5_ced7_8572_8fbb_3458607c6269["delete()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| 42016ac5_ced7_8572_8fbb_3458607c6269
  9fb45d6c_100f_a5eb_0d0c_9aa73ceef482["get()"]
  98233652_bb29_50f3_e596_2812fd02b555 -->|method| 9fb45d6c_100f_a5eb_0d0c_9aa73ceef482

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/multipart/AbstractMixedHttpData.java lines 26–279

abstract class AbstractMixedHttpData<D extends HttpData> extends AbstractReferenceCounted implements HttpData {
    final String baseDir;
    final boolean deleteOnExit;
    D wrapped;

    private final long limitSize;

    AbstractMixedHttpData(long limitSize, String baseDir, boolean deleteOnExit, D initial) {
        this.limitSize = limitSize;
        this.wrapped = initial;
        this.baseDir = baseDir;
        this.deleteOnExit = deleteOnExit;
    }

    abstract D makeDiskData();

    @Override
    public long getMaxSize() {
        return wrapped.getMaxSize();
    }

    @Override
    public void setMaxSize(long maxSize) {
        wrapped.setMaxSize(maxSize);
    }

    @Override
    public ByteBuf content() {
        return wrapped.content();
    }

    @Override
    public void checkSize(long newSize) throws IOException {
        wrapped.checkSize(newSize);
    }

    @Override
    public long definedLength() {
        return wrapped.definedLength();
    }

    @Override
    public Charset getCharset() {
        return wrapped.getCharset();
    }

    @Override
    public String getName() {
        return wrapped.getName();
    }

    @Override
    public void addContent(ByteBuf buffer, boolean last) throws IOException {
        if (wrapped instanceof AbstractMemoryHttpData) {
            try {
                checkSize(wrapped.length() + buffer.readableBytes());
                if (wrapped.length() + buffer.readableBytes() > limitSize) {
                    D diskData = makeDiskData();
                    ByteBuf data = ((AbstractMemoryHttpData) wrapped).getByteBuf();
                    if (data != null && data.isReadable()) {
                        diskData.addContent(data.retain(), false);
                    }
                    wrapped.release();
                    wrapped = diskData;
                }
            } catch (IOException e) {
                buffer.release();
                throw e;
            }
        }
        wrapped.addContent(buffer, last);
    }

    @Override
    protected void deallocate() {
        delete();
    }

    @Override
    public void delete() {
        wrapped.delete();

Frequently Asked Questions

What is the AbstractMixedHttpData class?
AbstractMixedHttpData is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/AbstractMixedHttpData.java.
Where is AbstractMixedHttpData defined?
AbstractMixedHttpData is defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/AbstractMixedHttpData.java at line 26.

Analyze Your Own Codebase

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

Try Supermodel Free