Home / Class/ AbstractDiskHttpData Class — netty Architecture

AbstractDiskHttpData Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a3bc8afe_67a4_7958_deb1_2411299eac70["AbstractDiskHttpData"]
  1a9b6d6e_aad2_aca9_d7ef_78aa077c0358["AbstractDiskHttpData.java"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|defined in| 1a9b6d6e_aad2_aca9_d7ef_78aa077c0358
  fa61ba4d_d42f_1228_6ef0_a454edc224b4["AbstractDiskHttpData()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| fa61ba4d_d42f_1228_6ef0_a454edc224b4
  78c06a73_91a2_18dc_5e35_86d66dbb0749["String()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 78c06a73_91a2_18dc_5e35_86d66dbb0749
  379b8a0e_e1ff_f98b_3d1e_188178e6798b["deleteOnExit()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 379b8a0e_e1ff_f98b_3d1e_188178e6798b
  2d07ac4f_b182_ee80_1a15_fd71af4af43b["File()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 2d07ac4f_b182_ee80_1a15_fd71af4af43b
  e668b0b0_6774_61ad_8797_72bf509862df["setContent()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| e668b0b0_6774_61ad_8797_72bf509862df
  ca0a2f7b_500d_bf2d_b3d5_ab79c81f8f40["addContent()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| ca0a2f7b_500d_bf2d_b3d5_ab79c81f8f40
  46199fd2_039c_9b4c_57d1_951bf7c4093f["delete()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 46199fd2_039c_9b4c_57d1_951bf7c4093f
  0b383c44_ee98_923d_9548_a2b7f6fa16ca["get()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 0b383c44_ee98_923d_9548_a2b7f6fa16ca
  dd334ef0_bddc_96a8_e369_3a4165595501["ByteBuf()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| dd334ef0_bddc_96a8_e369_3a4165595501
  8cd34bf9_f1bf_490c_9671_729e1aa4606a["isInMemory()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 8cd34bf9_f1bf_490c_9671_729e1aa4606a
  9eb75892_964e_3341_39bd_32cf59246e12["renameTo()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| 9eb75892_964e_3341_39bd_32cf59246e12
  f2399ca6_0b67_2eda_ec85_f7894af89210["readFrom()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| f2399ca6_0b67_2eda_ec85_f7894af89210
  b43729b3_d44c_d6c1_2e21_3eae8c1fbe86["HttpData()"]
  a3bc8afe_67a4_7958_deb1_2411299eac70 -->|method| b43729b3_d44c_d6c1_2e21_3eae8c1fbe86

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/multipart/AbstractDiskHttpData.java lines 40–484

public abstract class AbstractDiskHttpData extends AbstractHttpData {

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(AbstractDiskHttpData.class);

    private File file;
    private boolean isRenamed;
    private FileChannel fileChannel;

    protected AbstractDiskHttpData(String name, Charset charset, long size) {
        super(name, charset, size);
    }

    /**
     *
     * @return the real DiskFilename (basename)
     */
    protected abstract String getDiskFilename();
    /**
     *
     * @return the default prefix
     */
    protected abstract String getPrefix();
    /**
     *
     * @return the default base Directory
     */
    protected abstract String getBaseDirectory();
    /**
     *
     * @return the default postfix
     */
    protected abstract String getPostfix();
    /**
     *
     * @return True if the file should be deleted on Exit by default
     */
    protected abstract boolean deleteOnExit();

    /**
     * @return a new Temp File from getDiskFilename(), default prefix, postfix and baseDirectory
     */
    private File tempFile() throws IOException {
        String newpostfix;
        String diskFilename = getDiskFilename();
        if (diskFilename != null) {
            newpostfix = '_' + Integer.toString(diskFilename.hashCode());
        } else {
            newpostfix = getPostfix();
        }
        File tmpFile;
        if (getBaseDirectory() == null) {
            // create a temporary file
            tmpFile = PlatformDependent.createTempFile(getPrefix(), newpostfix, null);
        } else {
            tmpFile = PlatformDependent.createTempFile(getPrefix(), newpostfix, new File(
                    getBaseDirectory()));
        }
        if (deleteOnExit()) {
            // See https://github.com/netty/netty/issues/10351
            DeleteFileOnExitHook.add(tmpFile.getPath());
        }
        return tmpFile;
    }

    @Override
    public void setContent(ByteBuf buffer) throws IOException {
        ObjectUtil.checkNotNull(buffer, "buffer");
        try {
            size = buffer.readableBytes();
            checkSize(size);
            if (definedSize > 0 && definedSize < size) {
                throw new IOException("Out of size: " + size + " > " + definedSize);
            }
            if (file == null) {
                file = tempFile();
            }
            if (buffer.readableBytes() == 0) {
                // empty file
                if (!file.createNewFile()) {
                    if (file.length() == 0) {
                        return;

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free