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());
                }
            }
    }
  • 相关阅读:
    bat windows批处理 移动所有子目录文件
    Oracle常见的QA
    [转载]行动起来
    [转载]微笑
    Excel数据更新至Mysql数据库
    sql server QA
    关于SharpZipLib的压缩与解压问题
    整合Spring.net到asp.net网站开发中初探
    设计模式概要
    Oracle 常用语句档案(二)
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3186741.html
Copyright © 2011-2022 走看看