Home / Class/ NioDomainSocketChannelConfig Class — netty Architecture

NioDomainSocketChannelConfig Class — netty Architecture

Architecture documentation for the NioDomainSocketChannelConfig class in NioDomainSocketChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  4dc5d821_24b6_9b83_3757_53db45985196["NioDomainSocketChannelConfig"]
  a7eca422_5bf2_1952_81d3_59b320111e2d["NioDomainSocketChannel.java"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|defined in| a7eca422_5bf2_1952_81d3_59b320111e2d
  73452e42_f9ba_e55d_88b4_022ad2d7ebaf["NioDomainSocketChannelConfig()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 73452e42_f9ba_e55d_88b4_022ad2d7ebaf
  5f76bd24_7dd4_5563_ff7c_daf6a085a216["isAllowHalfClosure()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 5f76bd24_7dd4_5563_ff7c_daf6a085a216
  66805111_d405_4de5_1bd2_85ce5a0d80ed["getOptions()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 66805111_d405_4de5_1bd2_85ce5a0d80ed
  35ec7fcd_0dc5_9fa9_c56c_939ac85ffe7d["T()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 35ec7fcd_0dc5_9fa9_c56c_939ac85ffe7d
  fbb29832_168c_fd9a_aa2e_d05d6bf202ce["setOption()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| fbb29832_168c_fd9a_aa2e_d05d6bf202ce
  014d6b57_6b02_60dc_120e_2216213af5a5["getReceiveBufferSize()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 014d6b57_6b02_60dc_120e_2216213af5a5
  a8b84de4_ad90_1b2f_04a7_cb24145c18b3["getSendBufferSize()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| a8b84de4_ad90_1b2f_04a7_cb24145c18b3
  b3cc2b21_f5dc_829e_0b8e_0d945de2999a["autoReadCleared()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| b3cc2b21_f5dc_829e_0b8e_0d945de2999a
  87d8f700_3354_bb33_af1a_b4a90e1838f3["setMaxBytesPerGatheringWrite()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 87d8f700_3354_bb33_af1a_b4a90e1838f3
  c0e509f0_5dcb_c849_76fa_6f34c05fdf4e["getMaxBytesPerGatheringWrite()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| c0e509f0_5dcb_c849_76fa_6f34c05fdf4e
  42c6a20e_6bb9_329f_aa42_defc00ee327d["calculateMaxBytesPerGatheringWrite()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| 42c6a20e_6bb9_329f_aa42_defc00ee327d
  ae01a2a2_9876_32ff_7737_aea5f3299e39["SocketChannel()"]
  4dc5d821_24b6_9b83_3757_53db45985196 -->|method| ae01a2a2_9876_32ff_7737_aea5f3299e39

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/socket/nio/NioDomainSocketChannel.java lines 452–641

    private final class NioDomainSocketChannelConfig extends DefaultChannelConfig
            implements DuplexChannelConfig {
        private volatile boolean allowHalfClosure;
        private volatile int maxBytesPerGatheringWrite = Integer.MAX_VALUE;
        private final SocketChannel javaChannel;
        private NioDomainSocketChannelConfig(NioDomainSocketChannel channel, SocketChannel javaChannel) {
            super(channel);
            this.javaChannel = javaChannel;
            calculateMaxBytesPerGatheringWrite();
        }

        @Override
        public boolean isAllowHalfClosure() {
            return allowHalfClosure;
        }

        @Override
        public NioDomainSocketChannelConfig setAllowHalfClosure(boolean allowHalfClosure) {
            this.allowHalfClosure = allowHalfClosure;
            return this;
        }
        @Override
        public Map<ChannelOption<?>, Object> getOptions() {
            List<ChannelOption<?>> options = new ArrayList<ChannelOption<?>>();
            options.add(SO_RCVBUF);
            options.add(SO_SNDBUF);
            for (ChannelOption<?> opt : NioChannelOption.getOptions(jdkChannel())) {
                options.add(opt);
            }
            return getOptions(super.getOptions(), options.toArray(new ChannelOption[0]));
        }

        @SuppressWarnings("unchecked")
        @Override
        public <T> T getOption(ChannelOption<T> option) {
            if (option == SO_RCVBUF) {
                return (T) Integer.valueOf(getReceiveBufferSize());
            }
            if (option == SO_SNDBUF) {
                return (T) Integer.valueOf(getSendBufferSize());
            }
            if (option instanceof NioChannelOption) {
                return NioChannelOption.getOption(jdkChannel(), (NioChannelOption<T>) option);
            }

            return super.getOption(option);
        }

        @Override
        public <T> boolean setOption(ChannelOption<T> option, T value) {
            if (option == SO_RCVBUF) {
                validate(option, value);
                setReceiveBufferSize((Integer) value);
            } else if (option == SO_SNDBUF) {
                validate(option, value);
                setSendBufferSize((Integer) value);
            } else if (option instanceof NioChannelOption) {
                return NioChannelOption.setOption(jdkChannel(), (NioChannelOption<T>) option, value);
            } else {
                return super.setOption(option, value);
            }

            return true;
        }

        private int getReceiveBufferSize() {
            try {
                return javaChannel.getOption(StandardSocketOptions.SO_RCVBUF);
            } catch (IOException e) {
                throw new ChannelException(e);
            }
        }

        private NioDomainSocketChannelConfig setReceiveBufferSize(int receiveBufferSize) {
            try {
                javaChannel.setOption(StandardSocketOptions.SO_RCVBUF, receiveBufferSize);
            } catch (IOException e) {
                throw new ChannelException(e);
            }
            return this;
        }

Frequently Asked Questions

What is the NioDomainSocketChannelConfig class?
NioDomainSocketChannelConfig is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/socket/nio/NioDomainSocketChannel.java.
Where is NioDomainSocketChannelConfig defined?
NioDomainSocketChannelConfig is defined in transport/src/main/java/io/netty/channel/socket/nio/NioDomainSocketChannel.java at line 452.

Analyze Your Own Codebase

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

Try Supermodel Free