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         super();
    140     }
    141 }