View Javadoc

    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 org.jboss.netty.handler.codec.spdy;
    17
    18  import org.jboss.netty.channel.ChannelDownstreamHandler;
    19  import org.jboss.netty.channel.ChannelEvent;
    20  import org.jboss.netty.channel.ChannelHandlerContext;
    21  import org.jboss.netty.channel.ChannelUpstreamHandler;
    22
    23  /**
    24   * A combination of {@link SpdyFrameDecoder} and {@link SpdyFrameEncoder}.
    25   * @apiviz.has org.jboss.netty.handler.codec.spdy.SpdyFrameDecoder
    26   * @apiviz.has org.jboss.netty.handler.codec.spdy.SpdyFrameEncoder
    27   */
    28  public class SpdyFrameCodec implements ChannelUpstreamHandler,
    29         ChannelDownstreamHandler {
    30
    31      private final SpdyFrameDecoder decoder;
    32      private final SpdyFrameEncoder encoder;
    33
    34      /**
    35       * Creates a new instance with the default decoder and encoder options
    36       * ({@code version (2)}, {@code maxChunkSize (8192)},
    37       * {@code maxHeaderSize (16384)}, {@code compressionLevel (6)},
    38       * {@code windowBits (15)}, and {@code memLevel (8)}).
    39       */
    40      @Deprecated
    41      public SpdyFrameCodec() {
    42          this(2);
    43      }
    44
    45      /**
    46       * Creates a new instance with the specified {@code version} and
    47       * the default decoder and encoder options
    48       * ({@code maxChunkSize (8192)}, {@code maxHeaderSize (16384)},
    49       * {@code compressionLevel (6)}, {@code windowBits (15)},
    50       * and {@code memLevel (8)}).
    51       */
    52      public SpdyFrameCodec(int version) {
    53          this(version, 8192, 16384, 6, 15, 8);
    54      }
    55
    56      /**
    57       * Creates a new instance with the specified decoder and encoder options.
    58       */
    59      public SpdyFrameCodec(
    60              int version, int maxChunkSize, int maxHeaderSize,
    61              int compressionLevel, int windowBits, int memLevel) {
    62          decoder = new SpdyFrameDecoder(version, maxChunkSize, maxHeaderSize);
    63          encoder = new SpdyFrameEncoder(version, compressionLevel, windowBits, memLevel);
    64      }
    65
    66      public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e)
    67              throws Exception {
    68          decoder.handleUpstream(ctx, e);
    69      }
    70
    71      public void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e)
    72              throws Exception {
    73          encoder.handleDownstream(ctx, e);
    74      }
    75  }