zoukankan      html  css  js  c++  java
  • Apache MINA 框架之默认session管理类实现

    DefaultSocketSessionConfig 类

    extends AbstractSocketSessionConfig extends AbstractIoSessionConfig

    implements SocketSessionConfig,IoSessionConfig

    protected IoService parent;
    private boolean defaultReuseAddress;
    private boolean reuseAddress;
    //接受数据缓冲区大小
     private int receiveBufferSize = -1;
    //发送数据缓冲区大小
     private int sendBufferSize = -1;
    
     private int trafficClass = 0private boolean keepAlive = false;
     private boolean oobInline = false;
     private int soLinger = -1;
     private boolean tcpNoDelay = false;
     public void init(IoService parent) {
            this.parent = parent;
    
            if (parent instanceof SocketAcceptor) {
                defaultReuseAddress = true;
            } else {
                defaultReuseAddress = false;
            }
    
            reuseAddress = defaultReuseAddress;
        }

    doSetAll方法

     protected final void doSetAll(IoSessionConfig config) {
            if (!(config instanceof SocketSessionConfig)) {
                return;
            }
    
            if (config instanceof AbstractSocketSessionConfig) {
                // Minimize unnecessary system calls by checking all 'propertyChanged' properties.
                AbstractSocketSessionConfig cfg = (AbstractSocketSessionConfig) config;
                if (cfg.isKeepAliveChanged()) {
                    setKeepAlive(cfg.isKeepAlive());
                }
                if (cfg.isOobInlineChanged()) {
                    setOobInline(cfg.isOobInline());
                }
                if (cfg.isReceiveBufferSizeChanged()) {
                    setReceiveBufferSize(cfg.getReceiveBufferSize());
                }
                if (cfg.isReuseAddressChanged()) {
                    setReuseAddress(cfg.isReuseAddress());
                }
                if (cfg.isSendBufferSizeChanged()) {
                    setSendBufferSize(cfg.getSendBufferSize());
                }
                if (cfg.isSoLingerChanged()) {
                    setSoLinger(cfg.getSoLinger());
                }
                if (cfg.isTcpNoDelayChanged()) {
                    setTcpNoDelay(cfg.isTcpNoDelay());
                }
                if (cfg.isTrafficClassChanged() && getTrafficClass() != cfg.getTrafficClass()) {
                    setTrafficClass(cfg.getTrafficClass());
                }
            } else {
                SocketSessionConfig cfg = (SocketSessionConfig) config;
                setKeepAlive(cfg.isKeepAlive());
                setOobInline(cfg.isOobInline());
                setReceiveBufferSize(cfg.getReceiveBufferSize());
                setReuseAddress(cfg.isReuseAddress());
                setSendBufferSize(cfg.getSendBufferSize());
                setSoLinger(cfg.getSoLinger());
                setTcpNoDelay(cfg.isTcpNoDelay());
                if (getTrafficClass() != cfg.getTrafficClass()) {
                    setTrafficClass(cfg.getTrafficClass());
                }
            }
    }
  • 相关阅读:
    【洛谷6776】[NOI2020] 超现实树(思维)
    【洛谷6773】[NOI2020] 命运(线段树合并优化DP)
    【洛谷5467】[PKUSC2018] PKUSC(计算几何)
    【洛谷3688】[ZJOI2017] 树状数组(二维线段树)
    【BZOJ4543】[POI2014] Hotel加强版(长链剖分优化DP)
    【洛谷5466】[PKUSC2018] 神仙的游戏(FFT)
    【BZOJ4574】[ZJOI2016] 线段树(动态规划)
    【洛谷7114】[NOIP2020] 字符串匹配(Z函数)
    扩展 KMP(Z 函数)学习笔记
    最后的胡言乱语
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3186741.html
Copyright © 2011-2022 走看看