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 * @return 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 * @param readBufferSize The size of the read buffer
44 */
45 void setReadBufferSize(int readBufferSize);
46
47 /**
48 * @return the minimum size of the read buffer that I/O processor
49 * allocates per each read. I/O processor will not decrease the
50 * read buffer size to the smaller value than this property value.
51 */
52 int getMinReadBufferSize();
53
54 /**
55 * Sets the minimum size of the read buffer that I/O processor
56 * allocates per each read. I/O processor will not decrease the
57 * read buffer size to the smaller value than this property value.
58 *
59 * @param minReadBufferSize The minimum size of the read buffer
60 */
61 void setMinReadBufferSize(int minReadBufferSize);
62
63 /**
64 * @return the maximum size of the read buffer that I/O processor
65 * allocates per each read. I/O processor will not increase the
66 * read buffer size to the greater value than this property value.
67 */
68 int getMaxReadBufferSize();
69
70 /**
71 * Sets the maximum size of the read buffer that I/O processor
72 * allocates per each read. I/O processor will not increase the
73 * read buffer size to the greater value than this property value.
74 *
75 * @param maxReadBufferSize The maximum size of the read buffer
76 */
77 void setMaxReadBufferSize(int maxReadBufferSize);
78
79 /**
80 * @return the interval (seconds) between each throughput calculation.
81 * The default value is <tt>3</tt> seconds.
82 */
83 int getThroughputCalculationInterval();
84
85 /**
86 * @return the interval (milliseconds) between each throughput calculation.
87 * The default value is <tt>3</tt> seconds.
88 */
89 long getThroughputCalculationIntervalInMillis();
90
91 /**
92 * Sets the interval (seconds) between each throughput calculation. The
93 * default value is <tt>3</tt> seconds.
94 *
95 * @param throughputCalculationInterval The interval
96 */
97 void setThroughputCalculationInterval(int throughputCalculationInterval);
98
99 /**
100 * @return idle time for the specified type of idleness in seconds.
101 *
102 * @param status The status for which we want the idle time (One of READER_IDLE,
103 * WRITER_IDLE or BOTH_IDLE)
104 */
105 int getIdleTime(IdleStatus status);
106
107 /**
108 * @return idle time for the specified type of idleness in milliseconds.
109 *
110 * @param status The status for which we want the idle time (One of READER_IDLE,
111 * WRITER_IDLE or BOTH_IDLE)
112 */
113 long getIdleTimeInMillis(IdleStatus status);
114
115 /**
116 * Sets idle time for the specified type of idleness in seconds.
117 * @param status The status for which we want to set the idle time (One of READER_IDLE,
118 * WRITER_IDLE or BOTH_IDLE)
119 * @param idleTime The time in second to set
120 */
121 void setIdleTime(IdleStatus status, int idleTime);
122
123 /**
124 * @return idle time for {@link IdleStatus#READER_IDLE} in seconds.
125 */
126 int getReaderIdleTime();
127
128 /**
129 * @return idle time for {@link IdleStatus#READER_IDLE} in milliseconds.
130 */
131 long getReaderIdleTimeInMillis();
132
133 /**
134 * Sets idle time for {@link IdleStatus#READER_IDLE} in seconds.
135 *
136 * @param idleTime The time to set
137 */
138 void setReaderIdleTime(int idleTime);
139
140 /**
141 * @return idle time for {@link IdleStatus#WRITER_IDLE} in seconds.
142 */
143 int getWriterIdleTime();
144
145 /**
146 * @return idle time for {@link IdleStatus#WRITER_IDLE} in milliseconds.
147 */
148 long getWriterIdleTimeInMillis();
149
150 /**
151 * Sets idle time for {@link IdleStatus#WRITER_IDLE} in seconds.
152 *
153 * @param idleTime The time to set
154 */
155 void setWriterIdleTime(int idleTime);
156
157 /**
158 * @return idle time for {@link IdleStatus#BOTH_IDLE} in seconds.
159 */
160 int getBothIdleTime();
161
162 /**
163 * @return idle time for {@link IdleStatus#BOTH_IDLE} in milliseconds.
164 */
165 long getBothIdleTimeInMillis();
166
167 /**
168 * Sets idle time for {@link IdleStatus#WRITER_IDLE} in seconds.
169 *
170 * @param idleTime The time to set
171 */
172 void setBothIdleTime(int idleTime);
173
174 /**
175 * @return write timeout in seconds.
176 */
177 int getWriteTimeout();
178
179 /**
180 * @return write timeout in milliseconds.
181 */
182 long getWriteTimeoutInMillis();
183
184 /**
185 * Sets write timeout in seconds.
186 *
187 * @param writeTimeout The timeout to set
188 */
189 void setWriteTimeout(int writeTimeout);
190
191 /**
192 * @return <tt>true</tt> if and only if {@link IoSession#read()} operation
193 * is enabled. If enabled, all received messages are stored in an internal
194 * {@link BlockingQueue} so you can read received messages in more
195 * convenient way for client applications. Enabling this option is not
196 * useful to server applications and can cause unintended memory leak, and
197 * therefore it's disabled by default.
198 */
199 boolean isUseReadOperation();
200
201 /**
202 * Enables or disabled {@link IoSession#read()} operation. If enabled, all
203 * received messages are stored in an internal {@link BlockingQueue} so you
204 * can read received messages in more convenient way for client
205 * applications. Enabling this option is not useful to server applications
206 * and can cause unintended memory leak, and therefore it's disabled by
207 * default.
208 *
209 * @param useReadOperation <tt>true</tt> if the read operation is enabled, <tt>false</tt> otherwise
210 */
211 void setUseReadOperation(boolean useReadOperation);
212
213 /**
214 * Sets all configuration properties retrieved from the specified
215 * <tt>config</tt>.
216 *
217 * @param config The configuration to use
218 */
219 void setAll(IoSessionConfig config);
220 }