1 /*
2 * Copyright 2020 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.handler.codec.quic;
17
18 import io.netty.buffer.ByteBufAllocator;
19 import io.netty.channel.MessageSizeEstimator;
20 import io.netty.channel.RecvByteBufAllocator;
21 import io.netty.channel.WriteBufferWaterMark;
22 import io.netty.channel.socket.DuplexChannelConfig;
23
24 /**
25 * {@link DuplexChannelConfig} for QUIC streams.
26 */
27 public interface QuicStreamChannelConfig extends DuplexChannelConfig {
28 /**
29 * Set this to {@code true} if the {@link QuicStreamChannel} should read {@link QuicStreamFrame}s and fire these
30 * through the {@link io.netty.channel.ChannelPipeline}, {@code false} if it uses {@link io.netty.buffer.ByteBuf}.
31 *
32 * @param readFrames {@code true} if {@link QuicStreamFrame}s should be used, {@code false} if
33 * {@link io.netty.buffer.ByteBuf} should be used.
34 * @return this instance itself.
35 *
36 */
37 QuicStreamChannelConfig setReadFrames(boolean readFrames);
38
39 /**
40 * Returns {@code true} if the {@link QuicStreamChannel} will read {@link QuicStreamFrame}s and fire these through
41 * the {@link io.netty.channel.ChannelPipeline}, {@code false} if it uses {@link io.netty.buffer.ByteBuf}.
42 *
43 * @return {@code true} if {@link QuicStreamFrame}s should be used, {@code false} if
44 * {@link io.netty.buffer.ByteBuf} should be used.
45 */
46 boolean isReadFrames();
47
48 @Override
49 QuicStreamChannelConfig setAllowHalfClosure(boolean allowHalfClosure);
50
51 @Override
52 QuicStreamChannelConfig setMaxMessagesPerRead(int maxMessagesPerRead);
53
54 @Override
55 QuicStreamChannelConfig setWriteSpinCount(int writeSpinCount);
56
57 @Override
58 QuicStreamChannelConfig setAllocator(ByteBufAllocator allocator);
59
60 @Override
61 QuicStreamChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
62
63 @Override
64 QuicStreamChannelConfig setAutoRead(boolean autoRead);
65
66 @Override
67 QuicStreamChannelConfig setAutoClose(boolean autoClose);
68
69 @Override
70 QuicStreamChannelConfig setMessageSizeEstimator(MessageSizeEstimator estimator);
71
72 @Override
73 QuicStreamChannelConfig setWriteBufferWaterMark(WriteBufferWaterMark writeBufferWaterMark);
74
75 @Override
76 QuicStreamChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis);
77
78 @Override
79 QuicStreamChannelConfig setWriteBufferHighWaterMark(int writeBufferHighWaterMark);
80
81 @Override
82 QuicStreamChannelConfig setWriteBufferLowWaterMark(int writeBufferLowWaterMark);
83 }