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.rtsp;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19 import org.jboss.netty.handler.codec.frame.TooLongFrameException;
20 import org.jboss.netty.handler.codec.http.DefaultHttpRequest;
21 import org.jboss.netty.handler.codec.http.HttpMessage;
22 import org.jboss.netty.handler.codec.http.HttpRequest;
23
24 /**
25 * Decodes {@link ChannelBuffer}s into RTSP requests represented in
26 * {@link HttpRequest}s.
27 * <p>
28 * <h3>Parameters that prevents excessive memory consumption</h3>
29 * <table border="1">
30 * <tr>
31 * <th>Name</th><th>Meaning</th>
32 * </tr>
33 * <tr>
34 * <td>{@code maxInitialLineLength}</td>
35 * <td>The maximum length of the initial line (e.g. {@code "SETUP / RTSP/1.0"})
36 * If the length of the initial line exceeds this value, a
37 * {@link TooLongFrameException} will be raised.</td>
38 * </tr>
39 * <tr>
40 * <td>{@code maxHeaderSize}</td>
41 * <td>The maximum length of all headers. If the sum of the length of each
42 * header exceeds this value, a {@link TooLongFrameException} will be raised.</td>
43 * </tr>
44 * <tr>
45 * <td>{@code maxContentLength}</td>
46 * <td>The maximum length of the content. If the content length exceeds this
47 * value, a {@link TooLongFrameException} will be raised.</td>
48 * </tr>
49 * </table>
50 */
51 public class RtspRequestDecoder extends RtspMessageDecoder {
52
53 /**
54 * Creates a new instance with the default
55 * {@code maxInitialLineLength (4096}}, {@code maxHeaderSize (8192)}, and
56 * {@code maxContentLength (8192)}.
57 */
58 public RtspRequestDecoder() {
59 }
60
61 /**
62 * Creates a new instance with the specified parameters.
63 */
64 public RtspRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxContentLength) {
65 super(maxInitialLineLength, maxHeaderSize, maxContentLength);
66 }
67
68 @Override
69 protected HttpMessage createMessage(String[] initialLine) throws Exception {
70 return new DefaultHttpRequest(RtspVersions.valueOf(initialLine[2]),
71 RtspMethods.valueOf(initialLine[0]), initialLine[1]);
72 }
73
74 @Override
75 protected boolean isDecodingRequest() {
76 return true;
77 }
78 }