/*
* RED5 Open Source Flash Server - http://code.google.com/p/red5/
*
* Copyright 2006-2012 by respective authors (see below). All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.red5.server.net.rtmp.message;
import java.util.HashMap;
import java.util.Map;
/**
* Represents all the actions which may be permitted on a stream.
*
* @author Paul Gregoire
*/
public enum StreamAction {
CONNECT("connect"), DISCONNECT("disconnect"), CREATE_STREAM("createStream"), DELETE_STREAM("deleteStream"), CLOSE_STREAM(
"closeStream"), INIT_STREAM("initStream"), RELEASE_STREAM("releaseStream"), PUBLISH("publish"), PAUSE(
"pause"), PAUSE_RAW("pauseRaw"), SEEK("seek"), PLAY("play"), PLAY2("play2"), STOP("disconnect"), RECEIVE_VIDEO(
"receiveVideo"), RECEIVE_AUDIO("receiveAudio"), CUSTOM("");
//presize to fit all enums in
private final static Map<String, StreamAction> map = new HashMap<String, StreamAction>(StreamAction.values().length);
//the stream action this enum is for
private final String actionString;
StreamAction(String actionString) {
this.actionString = actionString;
}
public String getActionString() {
return actionString;
}
public static StreamAction getEnum(String actionString) {
//fill the map if its empty
if (map.isEmpty()) {
//do this only once
for (StreamAction action : values()) {
map.put(action.getActionString(), action);
}
}
//look up the action from the predefined set
StreamAction match = map.get(actionString);
if (match != null) {
return match;
}
//return an action representing a custom type
return CUSTOM;
}
public boolean equals(StreamAction action) {
return action.getActionString().equals(actionString);
}
public boolean equals(String actionString) {
return getActionString().equals(actionString);
}
public String toString() {
return actionString;
}
}