View Javadoc

    1   /*
    2    * Copyright 2010 Red Hat, Inc.
    3    *
    4    * Red Hat licenses this file to you under the Apache License, version 2.0
    5    * (the "License"); you may not use this file except in compliance with the
    6    * 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   *
    26   * @author <a href="http://www.jboss.org/netty/">The Netty Project</a>
    27   * @author <a href="http://amitbhayani.blogspot.com/">Amit Bhayani</a>
    28   * @author <a href="http://gleamynode.net/">Trustin Lee</a>
    29   * @version $Rev: 2243 $, $Date: 2010-04-16 14:01:55 +0900 (Fri, 16 Apr 2010) $
    30   *
    31   * @apiviz.exclude
    32   */
    33  public final class RtspMethods {
    34
    35      /**
    36       * The OPTIONS method represents a request for information about the communication options available on the request/response
    37       * chain identified by the Request-URI. This method allows the client to determine the options and/or requirements
    38       * associated with a resource, or the capabilities of a server, without implying a resource action or initiating a
    39       * resource retrieval.
    40       */
    41      public static final HttpMethod OPTIONS = HttpMethod.OPTIONS;
    42
    43      /**
    44       * The DESCRIBE method retrieves the description of a presentation or
    45       * media object identified by the request URL from a server.
    46       */
    47      public static final HttpMethod DESCRIBE = new HttpMethod("DESCRIBE");
    48
    49      /**
    50       * The ANNOUNCE posts the description of a presentation or media object
    51       * identified by the request URL to a server, or updates the client-side
    52       * session description in real-time.
    53       */
    54      public static final HttpMethod ANNOUNCE = new HttpMethod("ANNOUNCE");
    55
    56      /**
    57       * The SETUP request for a URI specifies the transport mechanism to be
    58       * used for the streamed media.
    59       */
    60      public static final HttpMethod SETUP = new HttpMethod("SETUP");
    61
    62      /**
    63       * The PLAY method tells the server to start sending data via the
    64       * mechanism specified in SETUP.
    65       */
    66      public static final HttpMethod PLAY = new HttpMethod("PLAY");
    67
    68      /**
    69       * The PAUSE request causes the stream delivery to be interrupted
    70       * (halted) temporarily.
    71       */
    72      public static final HttpMethod PAUSE = new HttpMethod("PAUSE");
    73
    74      /**
    75       * The TEARDOWN request stops the stream delivery for the given URI,
    76       * freeing the resources associated with it.
    77       */
    78      public static final HttpMethod TEARDOWN = new HttpMethod("TEARDOWN");
    79
    80      /**
    81       * The GET_PARAMETER request retrieves the value of a parameter of a
    82       * presentation or stream specified in the URI.
    83       */
    84      public static final HttpMethod GET_PARAMETER = new HttpMethod("GET_PARAMETER");
    85
    86      /**
    87       * The SET_PARAMETER requests to set the value of a parameter for a
    88       * presentation or stream specified by the URI.
    89       */
    90      public static final HttpMethod SET_PARAMETER = new HttpMethod("SET_PARAMETER");
    91
    92      /**
    93       * The REDIRECT request informs the client that it must connect to another
    94       * server location.
    95       */
    96      public static final HttpMethod REDIRECT = new HttpMethod("REDIRECT");
    97
    98      /**
    99       * The RECORD method initiates recording a range of media data according to
    100      * the presentation description.
    101      */
    102     public static final HttpMethod RECORD = new HttpMethod("RECORD");
    103
    104     private static final Map<String, HttpMethod> methodMap = new HashMap<String, HttpMethod>();
    105
    106     static {
    107         methodMap.put(DESCRIBE.toString(), DESCRIBE);
    108         methodMap.put(ANNOUNCE.toString(), ANNOUNCE);
    109         methodMap.put(GET_PARAMETER.toString(), GET_PARAMETER);
    110         methodMap.put(OPTIONS.toString(), OPTIONS);
    111         methodMap.put(PAUSE.toString(), PAUSE);
    112         methodMap.put(PLAY.toString(), PLAY);
    113         methodMap.put(RECORD.toString(), RECORD);
    114         methodMap.put(REDIRECT.toString(), REDIRECT);
    115         methodMap.put(SETUP.toString(), SETUP);
    116         methodMap.put(SET_PARAMETER.toString(), SET_PARAMETER);
    117         methodMap.put(TEARDOWN.toString(), TEARDOWN);
    118     }
    119
    120     /**
    121      * Returns the {@link HttpMethod} represented by the specified name.
    122      * If the specified name is a standard RTSP method name, a cached instance
    123      * will be returned.  Otherwise, a new instance will be returned.
    124      */
    125     public static HttpMethod valueOf(String name) {
    126         if (name == null) {
    127             throw new NullPointerException("name");
    128         }
    129
    130         name = name.trim().toUpperCase();
    131         if (name.length() == 0) {
    132             throw new IllegalArgumentException("empty name");
    133         }
    134
    135         HttpMethod result = methodMap.get(name);
    136         if (result != null) {
    137             return result;
    138         } else {
    139             return new HttpMethod(name);
    140         }
    141     }
    142
    143     private RtspMethods() {
    144         super();
    145     }
    146 }