Home / Class/ UnsafeByteBufUtil Class — netty Architecture

UnsafeByteBufUtil Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a["UnsafeByteBufUtil"]
  c99d3a37_d9b8_9eed_beea_ad7724aebdd5["UnsafeByteBufUtil.java"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|defined in| c99d3a37_d9b8_9eed_beea_ad7724aebdd5
  d356e941_856a_4a4d_00ac_1449a287f3a1["getByte()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| d356e941_856a_4a4d_00ac_1449a287f3a1
  bb305000_1c2e_fc56_3232_7a19da9d98e2["getShort()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| bb305000_1c2e_fc56_3232_7a19da9d98e2
  65e3c6e7_7963_2f5f_402d_1950b0141ffd["getShortLE()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 65e3c6e7_7963_2f5f_402d_1950b0141ffd
  4b47d8ea_d1dc_c8b5_ce40_dedde7158d80["getUnsignedMedium()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 4b47d8ea_d1dc_c8b5_ce40_dedde7158d80
  169bb6f6_85b2_7833_87c9_8db7a8097081["getUnsignedMediumLE()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 169bb6f6_85b2_7833_87c9_8db7a8097081
  2224dc37_c0eb_0c83_a9ad_d4df4ad7053c["getInt()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 2224dc37_c0eb_0c83_a9ad_d4df4ad7053c
  328ccbd3_bd1e_48ff_e16b_c03ffb14ceec["getIntLE()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 328ccbd3_bd1e_48ff_e16b_c03ffb14ceec
  4acdfa3f_e7ee_0b55_b5b4_a31a048ebc99["getLong()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 4acdfa3f_e7ee_0b55_b5b4_a31a048ebc99
  de99570b_fd13_cd25_83b3_191137fc2991["getLongLE()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| de99570b_fd13_cd25_83b3_191137fc2991
  28a3995c_cf32_eea0_3ad8_5da04b7247b2["setByte()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 28a3995c_cf32_eea0_3ad8_5da04b7247b2
  03e2248e_0c02_a822_c29c_c12faa32f83b["setShort()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 03e2248e_0c02_a822_c29c_c12faa32f83b
  4067d53e_de3d_d51c_3637_5151a99924f9["setShortLE()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 4067d53e_de3d_d51c_3637_5151a99924f9
  9780a65f_f7a7_aa6a_e377_9241c372be9b["setMedium()"]
  2f99d7c3_a5a0_5538_ae7e_a825ef1ab37a -->|method| 9780a65f_f7a7_aa6a_e377_9241c372be9b

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/UnsafeByteBufUtil.java lines 34–702

final class UnsafeByteBufUtil {
    private static final boolean UNALIGNED = PlatformDependent.isUnaligned();
    private static final byte ZERO = 0;
    private static final int MAX_HAND_ROLLED_SET_ZERO_BYTES = 64;

    static byte getByte(long address) {
        return PlatformDependent.getByte(address);
    }

    static short getShort(long address) {
        if (UNALIGNED) {
            short v = PlatformDependent.getShort(address);
            return BIG_ENDIAN_NATIVE_ORDER ? v : Short.reverseBytes(v);
        }
        return (short) (PlatformDependent.getByte(address) << 8 | PlatformDependent.getByte(address + 1) & 0xff);
    }

    static short getShortLE(long address) {
        if (UNALIGNED) {
            short v = PlatformDependent.getShort(address);
            return BIG_ENDIAN_NATIVE_ORDER ? Short.reverseBytes(v) : v;
        }
        return (short) (PlatformDependent.getByte(address) & 0xff | PlatformDependent.getByte(address + 1) << 8);
    }

    static int getUnsignedMedium(long address) {
        if (UNALIGNED) {
            return (PlatformDependent.getByte(address) & 0xff) << 16 |
                    (BIG_ENDIAN_NATIVE_ORDER ? PlatformDependent.getShort(address + 1)
                                             : Short.reverseBytes(PlatformDependent.getShort(address + 1))) & 0xffff;
        }
        return (PlatformDependent.getByte(address)     & 0xff) << 16 |
               (PlatformDependent.getByte(address + 1) & 0xff) << 8  |
               PlatformDependent.getByte(address + 2)  & 0xff;
    }

    static int getUnsignedMediumLE(long address) {
        if (UNALIGNED) {
            return (PlatformDependent.getByte(address) & 0xff) |
                    ((BIG_ENDIAN_NATIVE_ORDER ? Short.reverseBytes(PlatformDependent.getShort(address + 1))
                                              : PlatformDependent.getShort(address + 1)) & 0xffff) << 8;
        }
        return PlatformDependent.getByte(address)      & 0xff        |
               (PlatformDependent.getByte(address + 1) & 0xff) << 8  |
               (PlatformDependent.getByte(address + 2) & 0xff) << 16;
    }

    static int getInt(long address) {
        if (UNALIGNED) {
            int v = PlatformDependent.getInt(address);
            return BIG_ENDIAN_NATIVE_ORDER ? v : Integer.reverseBytes(v);
        }
        return PlatformDependent.getByte(address) << 24 |
               (PlatformDependent.getByte(address + 1) & 0xff) << 16 |
               (PlatformDependent.getByte(address + 2) & 0xff) <<  8 |
               PlatformDependent.getByte(address + 3)  & 0xff;
    }

    static int getIntLE(long address) {
        if (UNALIGNED) {
            int v = PlatformDependent.getInt(address);
            return BIG_ENDIAN_NATIVE_ORDER ? Integer.reverseBytes(v) : v;
        }
        return PlatformDependent.getByte(address) & 0xff |
               (PlatformDependent.getByte(address + 1) & 0xff) <<  8 |
               (PlatformDependent.getByte(address + 2) & 0xff) << 16 |
               PlatformDependent.getByte(address + 3) << 24;
    }

    static long getLong(long address) {
        if (UNALIGNED) {
            long v = PlatformDependent.getLong(address);
            return BIG_ENDIAN_NATIVE_ORDER ? v : Long.reverseBytes(v);
        }
        return ((long) PlatformDependent.getByte(address)) << 56 |
               (PlatformDependent.getByte(address + 1) & 0xffL) << 48 |
               (PlatformDependent.getByte(address + 2) & 0xffL) << 40 |
               (PlatformDependent.getByte(address + 3) & 0xffL) << 32 |
               (PlatformDependent.getByte(address + 4) & 0xffL) << 24 |
               (PlatformDependent.getByte(address + 5) & 0xffL) << 16 |
               (PlatformDependent.getByte(address + 6) & 0xffL) <<  8 |

Frequently Asked Questions

What is the UnsafeByteBufUtil class?
UnsafeByteBufUtil is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/UnsafeByteBufUtil.java.
Where is UnsafeByteBufUtil defined?
UnsafeByteBufUtil is defined in buffer/src/main/java/io/netty/buffer/UnsafeByteBufUtil.java at line 34.

Analyze Your Own Codebase

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

Try Supermodel Free