Home / Class/ DefaultSocketChannelConfig Class — netty Architecture

DefaultSocketChannelConfig Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  19c985a5_6de2_b73a_b8be_44fdb6a24808["DefaultSocketChannelConfig"]
  0fb06619_6bec_ba61_ef93_d890bad6f51e["DefaultSocketChannelConfig.java"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|defined in| 0fb06619_6bec_ba61_ef93_d890bad6f51e
  8126db1b_df9e_7175_2a70_c87599cfc149["DefaultSocketChannelConfig()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 8126db1b_df9e_7175_2a70_c87599cfc149
  90732b6f_1bd9_bce7_f3f4_c7afee67ebb2["getOptions()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 90732b6f_1bd9_bce7_f3f4_c7afee67ebb2
  4c65ec91_af0a_e9b6_3595_34996601a775["T()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 4c65ec91_af0a_e9b6_3595_34996601a775
  7ca6c435_75cf_5397_91f4_82717eb9af94["setOption()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 7ca6c435_75cf_5397_91f4_82717eb9af94
  8d630525_f78e_9576_abe4_710134f07cd6["getReceiveBufferSize()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 8d630525_f78e_9576_abe4_710134f07cd6
  aa38495f_fcb6_ae31_5a8a_315f93eb121c["getSendBufferSize()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| aa38495f_fcb6_ae31_5a8a_315f93eb121c
  5a5894fc_9ffa_4d5d_5481_b372e6f5445f["getSoLinger()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 5a5894fc_9ffa_4d5d_5481_b372e6f5445f
  7ba30374_82db_956f_92d5_89f58be6db83["getTrafficClass()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 7ba30374_82db_956f_92d5_89f58be6db83
  cfaa208a_f118_9a49_5965_357f1ae4ffb5["isKeepAlive()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| cfaa208a_f118_9a49_5965_357f1ae4ffb5
  fbc32fd7_746b_147c_dc4e_32887d902c9b["isReuseAddress()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| fbc32fd7_746b_147c_dc4e_32887d902c9b
  52cfd547_1968_1c51_418c_2363558f67bb["isTcpNoDelay()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 52cfd547_1968_1c51_418c_2363558f67bb
  bc7a79f4_0570_4734_f156_c4453aaa4e81["SocketChannelConfig()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| bc7a79f4_0570_4734_f156_c4453aaa4e81
  02d91e23_55ea_8989_a22e_ae112cf53766["isAllowHalfClosure()"]
  19c985a5_6de2_b73a_b8be_44fdb6a24808 -->|method| 02d91e23_55ea_8989_a22e_ae112cf53766

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/socket/DefaultSocketChannelConfig.java lines 37–347

public class DefaultSocketChannelConfig extends DefaultChannelConfig
                                        implements SocketChannelConfig {

    protected final Socket javaSocket;
    private volatile boolean allowHalfClosure;

    /**
     * Creates a new instance.
     */
    public DefaultSocketChannelConfig(SocketChannel channel, Socket javaSocket) {
        super(channel);
        this.javaSocket = ObjectUtil.checkNotNull(javaSocket, "javaSocket");

        // Enable TCP_NODELAY by default if possible.
        if (PlatformDependent.canEnableTcpNoDelayByDefault()) {
            try {
                setTcpNoDelay(true);
            } catch (Exception e) {
                // Ignore.
            }
        }
    }

    @Override
    public Map<ChannelOption<?>, Object> getOptions() {
        return getOptions(
                super.getOptions(),
                SO_RCVBUF, SO_SNDBUF, TCP_NODELAY, SO_KEEPALIVE, SO_REUSEADDR, SO_LINGER, IP_TOS,
                ALLOW_HALF_CLOSURE);
    }

    @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 == TCP_NODELAY) {
            return (T) Boolean.valueOf(isTcpNoDelay());
        }
        if (option == SO_KEEPALIVE) {
            return (T) Boolean.valueOf(isKeepAlive());
        }
        if (option == SO_REUSEADDR) {
            return (T) Boolean.valueOf(isReuseAddress());
        }
        if (option == SO_LINGER) {
            return (T) Integer.valueOf(getSoLinger());
        }
        if (option == IP_TOS) {
            return (T) Integer.valueOf(getTrafficClass());
        }
        if (option == ALLOW_HALF_CLOSURE) {
            return (T) Boolean.valueOf(isAllowHalfClosure());
        }

        return super.getOption(option);
    }

    @Override
    public <T> boolean setOption(ChannelOption<T> option, T value) {
        validate(option, value);

        if (option == SO_RCVBUF) {
            setReceiveBufferSize((Integer) value);
        } else if (option == SO_SNDBUF) {
            setSendBufferSize((Integer) value);
        } else if (option == TCP_NODELAY) {
            setTcpNoDelay((Boolean) value);
        } else if (option == SO_KEEPALIVE) {
            setKeepAlive((Boolean) value);
        } else if (option == SO_REUSEADDR) {
            setReuseAddress((Boolean) value);
        } else if (option == SO_LINGER) {
            setSoLinger((Integer) value);
        } else if (option == IP_TOS) {
            setTrafficClass((Integer) value);
        } else if (option == ALLOW_HALF_CLOSURE) {

Frequently Asked Questions

What is the DefaultSocketChannelConfig class?
DefaultSocketChannelConfig is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/socket/DefaultSocketChannelConfig.java.
Where is DefaultSocketChannelConfig defined?
DefaultSocketChannelConfig is defined in transport/src/main/java/io/netty/channel/socket/DefaultSocketChannelConfig.java at line 37.

Analyze Your Own Codebase

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

Try Supermodel Free