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.rtsp;
17  
18  import java.util.HashMap;
19  import java.util.Map;
20  
21  import org.jboss.netty.handler.codec.http.HttpMethod;
22  
23  /**
24   * The request method of RTSP.
25   * @apiviz.exclude
26   */
27  public final class RtspMethods {
28  
29      /**
30       * The OPTIONS method represents a request for information about the communication options
31       * available on the request/response chain identified by the Request-URI. This method allows
32       * the client to determine the options and/or requirements associated with a resource, or the
33       * capabilities of a server, without implying a resource action or initiating a resource
34       * retrieval.
35       */
36      public static final HttpMethod OPTIONS = HttpMethod.OPTIONS;
37  
38      /**
39       * The DESCRIBE method retrieves the description of a presentation or
40       * media object identified by the request URL from a server.
41       */
42      public static final HttpMethod DESCRIBE = new HttpMethod("DESCRIBE");
43  
44      /**
45       * The ANNOUNCE posts the description of a presentation or media object
46       * identified by the request URL to a server, or updates the client-side
47       * session description in real-time.
48       */
49      public static final HttpMethod ANNOUNCE = new HttpMethod("ANNOUNCE");
50  
51      /**
52       * The SETUP request for a URI specifies the transport mechanism to be
53       * used for the streamed media.
54       */
55      public static final HttpMethod SETUP = new HttpMethod("SETUP");
56  
57      /**
58       * The PLAY method tells the server to start sending data via the
59       * mechanism specified in SETUP.
60       */
61      public static final HttpMethod PLAY = new HttpMethod("PLAY");
62  
63      /**
64       * The PAUSE request causes the stream delivery to be interrupted
65       * (halted) temporarily.
66       */
67      public static final HttpMethod PAUSE = new HttpMethod("PAUSE");
68  
69      /**
70       * The TEARDOWN request stops the stream delivery for the given URI,
71       * freeing the resources associated with it.
72       */
73      public static final HttpMethod TEARDOWN = new HttpMethod("TEARDOWN");
74  
75      /**
76       * The GET_PARAMETER request retrieves the value of a parameter of a
77       * presentation or stream specified in the URI.
78       */
79      public static final HttpMethod GET_PARAMETER = new HttpMethod("GET_PARAMETER");
80  
81      /**
82       * The SET_PARAMETER requests to set the value of a parameter for a
83       * presentation or stream specified by the URI.
84       */
85      public static final HttpMethod SET_PARAMETER = new HttpMethod("SET_PARAMETER");
86  
87      /**
88       * The REDIRECT request informs the client that it must connect to another
89       * server location.
90       */
91      public static final HttpMethod REDIRECT = new HttpMethod("REDIRECT");
92  
93      /**
94       * The RECORD method initiates recording a range of media data according to
95       * the presentation description.
96       */
97      public static final HttpMethod RECORD = new HttpMethod("RECORD");
98  
99      private static final Map<String, HttpMethod> methodMap = new HashMap<String, HttpMethod>();
100 
101     static {
102         methodMap.put(DESCRIBE.toString(), DESCRIBE);
103         methodMap.put(ANNOUNCE.toString(), ANNOUNCE);
104         methodMap.put(GET_PARAMETER.toString(), GET_PARAMETER);
105         methodMap.put(OPTIONS.toString(), OPTIONS);
106         methodMap.put(PAUSE.toString(), PAUSE);
107         methodMap.put(PLAY.toString(), PLAY);
108         methodMap.put(RECORD.toString(), RECORD);
109         methodMap.put(REDIRECT.toString(), REDIRECT);
110         methodMap.put(SETUP.toString(), SETUP);
111         methodMap.put(SET_PARAMETER.toString(), SET_PARAMETER);
112         methodMap.put(TEARDOWN.toString(), TEARDOWN);
113     }
114 
115     /**
116      * Returns the {@link HttpMethod} represented by the specified name.
117      * If the specified name is a standard RTSP method name, a cached instance
118      * will be returned.  Otherwise, a new instance will be returned.
119      */
120     public static HttpMethod valueOf(String name) {
121         if (name == null) {
122             throw new NullPointerException("name");
123         }
124 
125         name = name.trim().toUpperCase();
126         if (name.length() == 0) {
127             throw new IllegalArgumentException("empty name");
128         }
129 
130         HttpMethod result = methodMap.get(name);
131         if (result != null) {
132             return result;
133         } else {
134             return new HttpMethod(name);
135         }
136     }
137 
138     private RtspMethods() {
139     }
140 }