1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 * 19 */ 20 package org.apache.mina.core.session; 21 22 import java.util.concurrent.BlockingQueue; 23 24 /** 25 * The configuration of {@link IoSession}. 26 * 27 * @author <a href="http://mina.apache.org">Apache MINA Project</a> 28 */ 29 public interface IoSessionConfig { 30 31 /** 32 * Returns the size of the read buffer that I/O processor allocates 33 * per each read. It's unusual to adjust this property because 34 * it's often adjusted automatically by the I/O processor. 35 */ 36 int getReadBufferSize(); 37 38 /** 39 * Sets the size of the read buffer that I/O processor allocates 40 * per each read. It's unusual to adjust this property because 41 * it's often adjusted automatically by the I/O processor. 42 */ 43 void setReadBufferSize(int readBufferSize); 44 45 /** 46 * Returns the minimum size of the read buffer that I/O processor 47 * allocates per each read. I/O processor will not decrease the 48 * read buffer size to the smaller value than this property value. 49 */ 50 int getMinReadBufferSize(); 51 52 /** 53 * Sets the minimum size of the read buffer that I/O processor 54 * allocates per each read. I/O processor will not decrease the 55 * read buffer size to the smaller value than this property value. 56 */ 57 void setMinReadBufferSize(int minReadBufferSize); 58 59 /** 60 * Returns the maximum size of the read buffer that I/O processor 61 * allocates per each read. I/O processor will not increase the 62 * read buffer size to the greater value than this property value. 63 */ 64 int getMaxReadBufferSize(); 65 66 /** 67 * Sets the maximum size of the read buffer that I/O processor 68 * allocates per each read. I/O processor will not increase the 69 * read buffer size to the greater value than this property value. 70 */ 71 void setMaxReadBufferSize(int maxReadBufferSize); 72 73 /** 74 * Returns the interval (seconds) between each throughput calculation. 75 * The default value is <tt>3</tt> seconds. 76 */ 77 int getThroughputCalculationInterval(); 78 79 /** 80 * Returns the interval (milliseconds) between each throughput calculation. 81 * The default value is <tt>3</tt> seconds. 82 */ 83 long getThroughputCalculationIntervalInMillis(); 84 85 /** 86 * Sets the interval (seconds) between each throughput calculation. The 87 * default value is <tt>3</tt> seconds. 88 */ 89 void setThroughputCalculationInterval(int throughputCalculationInterval); 90 91 /** 92 * Returns idle time for the specified type of idleness in seconds. 93 */ 94 int getIdleTime(IdleStatus status); 95 96 /** 97 * Returns idle time for the specified type of idleness in milliseconds. 98 */ 99 long getIdleTimeInMillis(IdleStatus status); 100 101 /** 102 * Sets idle time for the specified type of idleness in seconds. 103 */ 104 void setIdleTime(IdleStatus status, int idleTime); 105 106 /** 107 * Returns idle time for {@link IdleStatus#READER_IDLE} in seconds. 108 */ 109 int getReaderIdleTime(); 110 111 /** 112 * Returns idle time for {@link IdleStatus#READER_IDLE} in milliseconds. 113 */ 114 long getReaderIdleTimeInMillis(); 115 116 /** 117 * Sets idle time for {@link IdleStatus#READER_IDLE} in seconds. 118 */ 119 void setReaderIdleTime(int idleTime); 120 121 /** 122 * Returns idle time for {@link IdleStatus#WRITER_IDLE} in seconds. 123 */ 124 int getWriterIdleTime(); 125 126 /** 127 * Returns idle time for {@link IdleStatus#WRITER_IDLE} in milliseconds. 128 */ 129 long getWriterIdleTimeInMillis(); 130 131 /** 132 * Sets idle time for {@link IdleStatus#WRITER_IDLE} in seconds. 133 */ 134 void setWriterIdleTime(int idleTime); 135 136 /** 137 * Returns idle time for {@link IdleStatus#BOTH_IDLE} in seconds. 138 */ 139 int getBothIdleTime(); 140 141 /** 142 * Returns idle time for {@link IdleStatus#BOTH_IDLE} in milliseconds. 143 */ 144 long getBothIdleTimeInMillis(); 145 146 /** 147 * Sets idle time for {@link IdleStatus#WRITER_IDLE} in seconds. 148 */ 149 void setBothIdleTime(int idleTime); 150 151 /** 152 * Returns write timeout in seconds. 153 */ 154 int getWriteTimeout(); 155 156 /** 157 * Returns write timeout in milliseconds. 158 */ 159 long getWriteTimeoutInMillis(); 160 161 /** 162 * Sets write timeout in seconds. 163 */ 164 void setWriteTimeout(int writeTimeout); 165 166 /** 167 * Returns <tt>true</tt> if and only if {@link IoSession#read()} operation 168 * is enabled. If enabled, all received messages are stored in an internal 169 * {@link BlockingQueue} so you can read received messages in more 170 * convenient way for client applications. Enabling this option is not 171 * useful to server applications and can cause unintended memory leak, and 172 * therefore it's disabled by default. 173 */ 174 boolean isUseReadOperation(); 175 176 /** 177 * Enables or disabled {@link IoSession#read()} operation. If enabled, all 178 * received messages are stored in an internal {@link BlockingQueue} so you 179 * can read received messages in more convenient way for client 180 * applications. Enabling this option is not useful to server applications 181 * and can cause unintended memory leak, and therefore it's disabled by 182 * default. 183 */ 184 void setUseReadOperation(boolean useReadOperation); 185 186 /** 187 * Sets all configuration properties retrieved from the specified 188 * <tt>config</tt>. 189 */ 190 void setAll(IoSessionConfig config); 191 }