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 }