1 /* 2 * Copyright 2011 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty.channel.sctp; 17 18 import com.sun.nio.sctp.SctpStandardSocketOptions.InitMaxStreams; 19 import io.netty.buffer.ByteBufAllocator; 20 import io.netty.channel.ChannelConfig; 21 import io.netty.channel.ChannelOption; 22 import io.netty.channel.MessageSizeEstimator; 23 import io.netty.channel.RecvByteBufAllocator; 24 import io.netty.channel.WriteBufferWaterMark; 25 26 /** 27 * A {@link ChannelConfig} for a {@link SctpChannel}. 28 * <p/> 29 * <h3>Available options</h3> 30 * <p/> 31 * In addition to the options provided by {@link ChannelConfig}, 32 * {@link SctpChannelConfig} allows the following options in the option map: 33 * <p/> 34 * <table border="1" cellspacing="0" cellpadding="6"> 35 * <tr> 36 * <th>Name</th><th>Associated setter method</th> 37 * </tr><tr> 38 * <td>{@link ChannelOption#SO_RCVBUF}</td><td>{@link #setReceiveBufferSize(int)}</td> 39 * </tr><tr> 40 * <td>{@link ChannelOption#SO_SNDBUF}</td><td>{@link #setSendBufferSize(int)}</td> 41 * </tr><tr> 42 * <td>{@link SctpChannelOption#SCTP_NODELAY}</td><td>{@link #setSctpNoDelay(boolean)}}</td> 43 * </tr><tr> 44 * <td>{@link SctpChannelOption#SCTP_INIT_MAXSTREAMS}</td><td>{@link #setInitMaxStreams(InitMaxStreams)}</td> 45 * </tr> 46 * </table> 47 */ 48 public interface SctpChannelConfig extends ChannelConfig { 49 50 /** 51 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 52 * {@code SCTP_NODELAY}</a> option. Please note that the default value of this option is {@code true} unlike the 53 * operating system default ({@code false}). However, for some buggy platforms, such as Android, that shows erratic 54 * behavior with Nagle's algorithm disabled, the default value remains to be {@code false}. 55 */ 56 boolean isSctpNoDelay(); 57 58 /** 59 * Sets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 60 * {@code SCTP_NODELAY}</a> option. Please note that the default value of this option is {@code true} unlike the 61 * operating system default ({@code false}). However, for some buggy platforms, such as Android, that shows erratic 62 * behavior with Nagle's algorithm disabled, the default value remains to be {@code false}. 63 */ 64 SctpChannelConfig setSctpNoDelay(boolean sctpNoDelay); 65 66 /** 67 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 68 * {@code SO_SNDBUF}</a> option. 69 */ 70 int getSendBufferSize(); 71 72 /** 73 * Sets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 74 * {@code SO_SNDBUF}</a> option. 75 */ 76 SctpChannelConfig setSendBufferSize(int sendBufferSize); 77 78 /** 79 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 80 * {@code SO_RCVBUF}</a> option. 81 */ 82 int getReceiveBufferSize(); 83 84 /** 85 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 86 * {@code SO_RCVBUF}</a> option. 87 */ 88 SctpChannelConfig setReceiveBufferSize(int receiveBufferSize); 89 90 /** 91 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 92 * {@code SCTP_INIT_MAXSTREAMS}</a> option. 93 */ 94 InitMaxStreams getInitMaxStreams(); 95 96 /** 97 * Gets the <a href="https://openjdk.java.net/projects/sctp/javadoc/com/sun/nio/sctp/SctpStandardSocketOption.html"> 98 * {@code SCTP_INIT_MAXSTREAMS}</a> option. 99 */ 100 SctpChannelConfig setInitMaxStreams(InitMaxStreams initMaxStreams); 101 102 @Override 103 SctpChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis); 104 105 @Override 106 @Deprecated 107 SctpChannelConfig setMaxMessagesPerRead(int maxMessagesPerRead); 108 109 @Override 110 SctpChannelConfig setWriteSpinCount(int writeSpinCount); 111 112 @Override 113 SctpChannelConfig setAllocator(ByteBufAllocator allocator); 114 115 @Override 116 SctpChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator); 117 118 @Override 119 SctpChannelConfig setAutoRead(boolean autoRead); 120 121 @Override 122 SctpChannelConfig setAutoClose(boolean autoClose); 123 124 @Override 125 SctpChannelConfig setWriteBufferHighWaterMark(int writeBufferHighWaterMark); 126 127 @Override 128 SctpChannelConfig setWriteBufferLowWaterMark(int writeBufferLowWaterMark); 129 130 @Override 131 SctpChannelConfig setWriteBufferWaterMark(WriteBufferWaterMark writeBufferWaterMark); 132 133 @Override 134 SctpChannelConfig setMessageSizeEstimator(MessageSizeEstimator estimator); 135 }