View Javadoc
1   /*
2    * Copyright 2015 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License, version 2.0 (the
5    * "License"); you may not use this file except in compliance with the License. You may obtain a
6    * 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 distributed under the License
11   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing permissions and limitations under
13   * the License.
14   */
15  package io.netty5.handler.codec.http2;
16  
17  import io.netty5.util.internal.UnstableApi;
18  
19  import static java.util.Objects.requireNonNull;
20  
21  /**
22   * A decorator around another {@link Http2ConnectionEncoder} instance.
23   */
24  @UnstableApi
25  public class DecoratingHttp2ConnectionEncoder extends DecoratingHttp2FrameWriter implements Http2ConnectionEncoder,
26          Http2SettingsReceivedConsumer {
27      private final Http2ConnectionEncoder delegate;
28  
29      public DecoratingHttp2ConnectionEncoder(Http2ConnectionEncoder delegate) {
30          super(delegate);
31          this.delegate = requireNonNull(delegate, "delegate");
32      }
33  
34      @Override
35      public void lifecycleManager(Http2LifecycleManager lifecycleManager) {
36          delegate.lifecycleManager(lifecycleManager);
37      }
38  
39      @Override
40      public Http2Connection connection() {
41          return delegate.connection();
42      }
43  
44      @Override
45      public Http2RemoteFlowController flowController() {
46          return delegate.flowController();
47      }
48  
49      @Override
50      public Http2FrameWriter frameWriter() {
51          return delegate.frameWriter();
52      }
53  
54      @Override
55      public Http2Settings pollSentSettings() {
56          return delegate.pollSentSettings();
57      }
58  
59      @Override
60      public void remoteSettings(Http2Settings settings) throws Http2Exception {
61          delegate.remoteSettings(settings);
62      }
63  
64      @Override
65      public void consumeReceivedSettings(Http2Settings settings) {
66          if (delegate instanceof Http2SettingsReceivedConsumer) {
67              ((Http2SettingsReceivedConsumer) delegate).consumeReceivedSettings(settings);
68          } else {
69              throw new IllegalStateException("delegate " + delegate + " is not an instance of " +
70                      Http2SettingsReceivedConsumer.class);
71          }
72      }
73  }