97 lines
2.9 KiB
Java
97 lines
2.9 KiB
Java
/*
|
|
* Copyright 2016 The Netty Project
|
|
*
|
|
* The Netty Project licenses this file to you 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 io.netty.channel;
|
|
|
|
import static io.netty.util.internal.ObjectUtil.checkPositiveOrZero;
|
|
|
|
/**
|
|
* WriteBufferWaterMark is used to set low water mark and high water mark for the write buffer.
|
|
* <p>
|
|
* If the number of bytes queued in the write buffer exceeds the
|
|
* {@linkplain #high high water mark}, {@link Channel#isWritable()}
|
|
* will start to return {@code false}.
|
|
* <p>
|
|
* If the number of bytes queued in the write buffer exceeds the
|
|
* {@linkplain #high high water mark} and then
|
|
* dropped down below the {@linkplain #low low water mark},
|
|
* {@link Channel#isWritable()} will start to return
|
|
* {@code true} again.
|
|
*/
|
|
public final class WriteBufferWaterMark {
|
|
|
|
private static final int DEFAULT_LOW_WATER_MARK = 32 * 1024;
|
|
private static final int DEFAULT_HIGH_WATER_MARK = 64 * 1024;
|
|
|
|
public static final WriteBufferWaterMark DEFAULT =
|
|
new WriteBufferWaterMark(DEFAULT_LOW_WATER_MARK, DEFAULT_HIGH_WATER_MARK, false);
|
|
|
|
private final int low;
|
|
private final int high;
|
|
|
|
/**
|
|
* Create a new instance.
|
|
*
|
|
* @param low low water mark for write buffer.
|
|
* @param high high water mark for write buffer
|
|
*/
|
|
public WriteBufferWaterMark(int low, int high) {
|
|
this(low, high, true);
|
|
}
|
|
|
|
/**
|
|
* This constructor is needed to keep backward-compatibility.
|
|
*/
|
|
WriteBufferWaterMark(int low, int high, boolean validate) {
|
|
if (validate) {
|
|
checkPositiveOrZero(low, "low");
|
|
if (high < low) {
|
|
throw new IllegalArgumentException(
|
|
"write buffer's high water mark cannot be less than " +
|
|
" low water mark (" + low + "): " +
|
|
high);
|
|
}
|
|
}
|
|
this.low = low;
|
|
this.high = high;
|
|
}
|
|
|
|
/**
|
|
* Returns the low water mark for the write buffer.
|
|
*/
|
|
public int low() {
|
|
return low;
|
|
}
|
|
|
|
/**
|
|
* Returns the high water mark for the write buffer.
|
|
*/
|
|
public int high() {
|
|
return high;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
StringBuilder builder = new StringBuilder(55)
|
|
.append("WriteBufferWaterMark(low: ")
|
|
.append(low)
|
|
.append(", high: ")
|
|
.append(high)
|
|
.append(")");
|
|
return builder.toString();
|
|
}
|
|
|
|
}
|