1 /*
2 * Copyright 2012 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 * http://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.udt;
17
18 import com.barchart.udt.OptionUDT;
19 import com.barchart.udt.TypeUDT;
20 import io.netty.buffer.ByteBufAllocator;
21 import io.netty.channel.ChannelConfig;
22 import io.netty.channel.ChannelException;
23 import io.netty.channel.ChannelOption;
24 import io.netty.channel.MessageSizeEstimator;
25 import io.netty.channel.RecvByteBufAllocator;
26
27 /**
28 * A {@link ChannelConfig} for a {@link UdtChannel}.
29 * <p>
30 * <h3>Available options</h3>
31 * In addition to the options provided by {@link ChannelConfig},
32 * {@link UdtChannelConfig} allows the following options in the option map:
33 * <p>
34 * <table border="1" cellspacing="0" cellpadding="6">
35 * <tr>
36 * <th>Name</th>
37 * <th>Associated setter method</th>
38 * </tr><tr>
39 * <td>{@link ChannelOption#SO_REUSEADDR}</td><td>{@link #setReuseAddress(boolean)}</td>
40 * </tr><tr>
41 * <td>{@link ChannelOption#SO_RCVBUF}</td><td>{@link #setReceiveBufferSize(int)}</td>
42 * </tr><tr>
43 * <td>{@link ChannelOption#SO_SNDBUF}</td><td>{@link #setSendBufferSize(int)}</td>
44 * </tr><tr>
45 * <td>{@link ChannelOption#SO_REUSEADDR}</td><td>{@link #setReuseAddress(boolean)}</td>
46 * </tr><tr>
47 * <td>{@link ChannelOption#SO_LINGER}</td><td>{@link #setSoLinger(int)}</td>
48 * </tr><tr>
49 * <td>{@link ChannelOption#SO_RCVBUF}</td><td>{@link #setReceiveBufferSize(int)}</td>
50 * </tr><tr>
51 * <td>{@link ChannelOption#SO_SNDBUF}</td><td>{@link #setSendBufferSize(int)}</td>
52 * </tr><tr>
53 * <td>{@link UdtChannelOption#PROTOCOL_RECEIVE_BUFFER_SIZE}</td>
54 * <td>{@link #setProtocolReceiveBufferSize(int)}</td>
55 * </tr><tr>
56 * <td>{@link UdtChannelOption#PROTOCOL_SEND_BUFFER_SIZE}</td>
57 * <td>{@link #setProtocolSendBufferSize(int)}</td>
58 * </tr><tr>
59 * <td>{@link UdtChannelOption#SYSTEM_RECEIVE_BUFFER_SIZE}</td>
60 * <td>{@link #setSystemReceiveBufferSize(int)}</td>
61 * </tr><tr>
62 * <td>{@link UdtChannelOption#SYSTEM_SEND_BUFFER_SIZE}</td>
63 * <td>{@link #setSystemSendBufferSize(int)}</td>
64
65 * </tr>
66 * </table>
67 * <p>
68 * Note that {@link TypeUDT#DATAGRAM} message oriented channels treat
69 * {@code "receiveBufferSize"} and {@code "sendBufferSize"} as maximum message
70 * size. If received or sent message does not fit specified sizes,
71 * {@link ChannelException} will be thrown.
72 *
73 * @deprecated The UDT transport is no longer maintained and will be removed.
74 */
75 @Deprecated
76 public interface UdtChannelConfig extends ChannelConfig {
77
78 /**
79 * Gets {@link OptionUDT#Protocol_Receive_Buffer_Size}
80 */
81 int getProtocolReceiveBufferSize();
82
83 /**
84 * Gets {@link OptionUDT#Protocol_Send_Buffer_Size}
85 */
86 int getProtocolSendBufferSize();
87
88 /**
89 * Gets the {@link ChannelOption#SO_RCVBUF} option.
90 */
91 int getReceiveBufferSize();
92
93 /**
94 * Gets the {@link ChannelOption#SO_SNDBUF} option.
95 */
96 int getSendBufferSize();
97
98 /**
99 * Gets the {@link ChannelOption#SO_LINGER} option.
100 */
101 int getSoLinger();
102
103 /**
104 * Gets {@link OptionUDT#System_Receive_Buffer_Size}
105 */
106 int getSystemReceiveBufferSize();
107
108 /**
109 * Gets {@link OptionUDT#System_Send_Buffer_Size}
110 */
111 int getSystemSendBufferSize();
112
113 /**
114 * Gets the {@link ChannelOption#SO_REUSEADDR} option.
115 */
116 boolean isReuseAddress();
117
118 @Override
119 UdtChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis);
120
121 @Override
122 UdtChannelConfig setMaxMessagesPerRead(int maxMessagesPerRead);
123
124 @Override
125 UdtChannelConfig setWriteSpinCount(int writeSpinCount);
126
127 @Override
128 UdtChannelConfig setAllocator(ByteBufAllocator allocator);
129
130 @Override
131 UdtChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
132
133 @Override
134 UdtChannelConfig setAutoRead(boolean autoRead);
135
136 @Override
137 UdtChannelConfig setAutoClose(boolean autoClose);
138
139 @Override
140 UdtChannelConfig setWriteBufferHighWaterMark(int writeBufferHighWaterMark);
141
142 @Override
143 UdtChannelConfig setWriteBufferLowWaterMark(int writeBufferLowWaterMark);
144
145 @Override
146 UdtChannelConfig setMessageSizeEstimator(MessageSizeEstimator estimator);
147
148 /**
149 * Sets {@link OptionUDT#Protocol_Receive_Buffer_Size}
150 */
151 UdtChannelConfig setProtocolReceiveBufferSize(int size);
152
153 /**
154 * Sets {@link OptionUDT#Protocol_Send_Buffer_Size}
155 */
156 UdtChannelConfig setProtocolSendBufferSize(int size);
157
158 /**
159 * Sets the {@link ChannelOption#SO_RCVBUF} option.
160 */
161 UdtChannelConfig setReceiveBufferSize(int receiveBufferSize);
162
163 /**
164 * Sets the {@link ChannelOption#SO_REUSEADDR} option.
165 */
166 UdtChannelConfig setReuseAddress(boolean reuseAddress);
167
168 /**
169 * Sets the {@link ChannelOption#SO_SNDBUF} option.
170 */
171 UdtChannelConfig setSendBufferSize(int sendBufferSize);
172
173 /**
174 * Sets the {@link ChannelOption#SO_LINGER} option.
175 */
176 UdtChannelConfig setSoLinger(int soLinger);
177
178 /**
179 * Sets {@link OptionUDT#System_Receive_Buffer_Size}
180 */
181 UdtChannelConfig setSystemReceiveBufferSize(int size);
182
183 /**
184 * Sets {@link OptionUDT#System_Send_Buffer_Size}
185 */
186 UdtChannelConfig setSystemSendBufferSize(int size);
187 }