/** *Copyright [2009-2010] [dennis zhuang] *Licensed under the Apache License, Version 2.0 (the "License"); *you may not use this file except in compliance with the License. *You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 *Unless required by applicable law or agreed to in writing, *software distributed under the License is distributed on an "AS IS" BASIS, *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *either express or implied. See the License for the specific language governing permissions and limitations under the License */ package com.google.code.hs4j.network.config; /** * Networking configuration * * @author dennis * */ public class Configuration { /** * Read buffer size per connection */ private int sessionReadBufferSize = 32 * 1024; /** * Socket SO_TIMEOUT option */ private int soTimeout = 0; /** * Thread count for processing WRITABLE event */ private int writeThreadCount = 0; /** * Whether to enable statistics */ private boolean statisticsServer = false; /** * Whether to handle read write concurrently,default is true */ private boolean handleReadWriteConcurrently = true; /** * Thread coount for processing message dispatching */ private int dispatchMessageThreadCount = 0; /** * THread count for processing READABLE event */ private int readThreadCount = 1; /** * Increasing buffer size per time */ public static final int DEFAULT_INCREASE_BUFF_SIZE = 32 * 1024; /** * Max read buffer size for connection */ public static int MAX_READ_BUFFER_SIZE = 128 * 1024; /** * check session idle interval */ private volatile long checkSessionTimeoutInterval = 1000L; public final int getWriteThreadCount() { return this.writeThreadCount; } public final int getDispatchMessageThreadCount() { return this.dispatchMessageThreadCount; } public final void setDispatchMessageThreadCount( int dispatchMessageThreadCount) { this.dispatchMessageThreadCount = dispatchMessageThreadCount; } public final void setWriteThreadCount(int writeThreadCount) { this.writeThreadCount = writeThreadCount; } private volatile long sessionIdleTimeout = 5000L; /** * @see setSessionIdleTimeout * @return */ public final long getSessionIdleTimeout() { return this.sessionIdleTimeout; } public final void setSessionIdleTimeout(long sessionIdleTimeout) { this.sessionIdleTimeout = sessionIdleTimeout; } /** * @see setSessionReadBufferSize * @return */ public final int getSessionReadBufferSize() { return this.sessionReadBufferSize; } public final boolean isHandleReadWriteConcurrently() { return this.handleReadWriteConcurrently; } public final int getSoTimeout() { return this.soTimeout; } protected long statisticsInterval = 5 * 60 * 1000L; public final long getStatisticsInterval() { return this.statisticsInterval; } public final void setStatisticsInterval(long statisticsInterval) { this.statisticsInterval = statisticsInterval; } public final void setSoTimeout(int soTimeout) { if (soTimeout < 0) { throw new IllegalArgumentException("soTimeout<0"); } this.soTimeout = soTimeout; } public final void setHandleReadWriteConcurrently( boolean handleReadWriteConcurrently) { this.handleReadWriteConcurrently = handleReadWriteConcurrently; } public final void setSessionReadBufferSize(int tcpHandlerReadBufferSize) { if (tcpHandlerReadBufferSize <= 0) { throw new IllegalArgumentException("tcpHandlerReadBufferSize<=0"); } this.sessionReadBufferSize = tcpHandlerReadBufferSize; } public final boolean isStatisticsServer() { return this.statisticsServer; } public final void setStatisticsServer(boolean statisticsServer) { this.statisticsServer = statisticsServer; } /** * @see setReadThreadCount * @return */ public final int getReadThreadCount() { return this.readThreadCount; } public final void setReadThreadCount(int readThreadCount) { if (readThreadCount < 0) { throw new IllegalArgumentException("readThreadCount<0"); } this.readThreadCount = readThreadCount; } public void setCheckSessionTimeoutInterval(long checkSessionTimeoutInterval) { this.checkSessionTimeoutInterval = checkSessionTimeoutInterval; } public long getCheckSessionTimeoutInterval() { return this.checkSessionTimeoutInterval; } }