package org.red5.server.net.rtmp.message; /* * RED5 Open Source Flash Server - http://code.google.com/p/red5/ * * Copyright (c) 2006-2010 by respective authors (see below). All rights reserved. * * This library is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software * Foundation; either version 2.1 of the License, or (at your option) any later * version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.red5.server.so.ISharedObjectEvent.Type; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * SO event types mapping */ public class SharedObjectTypeMapping { /** * Logger */ protected static Logger log = LoggerFactory.getLogger(SharedObjectTypeMapping.class .getName()); /** * Types map */ public static final Type[] typeMap = new Type[] { null, Type.SERVER_CONNECT, // 01 Type.SERVER_DISCONNECT, // 02 Type.SERVER_SET_ATTRIBUTE, // 03 Type.CLIENT_UPDATE_DATA, // 04 Type.CLIENT_UPDATE_ATTRIBUTE, // 05 Type.SERVER_SEND_MESSAGE, // 06 Type.CLIENT_STATUS, // 07 Type.CLIENT_CLEAR_DATA, // 08 Type.CLIENT_DELETE_DATA, // 09 Type.SERVER_DELETE_ATTRIBUTE, // 0A Type.CLIENT_INITIAL_DATA, // 0B }; /** * Convert byte value of RTMP marker to event type * @param rtmpType RTMP marker value * @return Corresponding Shared Object event type */ public static Type toType(byte rtmpType) { return typeMap[rtmpType]; } /** * Convert SO event type to byte representation that RTMP uses * @param type Event type * @return Byte representation of given event type */ public static byte toByte(Type type) { switch (type) { case SERVER_CONNECT: return 0x01; case SERVER_DISCONNECT: return 0x02; case SERVER_SET_ATTRIBUTE: return 0x03; case CLIENT_UPDATE_DATA: return 0x04; case CLIENT_UPDATE_ATTRIBUTE: return 0x05; case SERVER_SEND_MESSAGE: return 0x06; case CLIENT_SEND_MESSAGE: return 0x06; case CLIENT_STATUS: return 0x07; case CLIENT_CLEAR_DATA: return 0x08; case CLIENT_DELETE_DATA: return 0x09; case SERVER_DELETE_ATTRIBUTE: return 0x0A; case CLIENT_INITIAL_DATA: return 0x0B; default: log.error("Unknown type " + type); return 0x00; } } /** * String representation of type * @param type Type * @return String representation of type */ public static String toString(Type type) { switch (type) { case SERVER_CONNECT: return "server connect"; case SERVER_DISCONNECT: return "server disconnect"; case SERVER_SET_ATTRIBUTE: return "server_set_attribute"; case CLIENT_UPDATE_DATA: return "client_update_data"; case CLIENT_UPDATE_ATTRIBUTE: return "client_update_attribute"; case SERVER_SEND_MESSAGE: return "server_send_message"; case CLIENT_SEND_MESSAGE: return "client_send_message"; case CLIENT_STATUS: return "client_status"; case CLIENT_CLEAR_DATA: return "client_clear_data"; case CLIENT_DELETE_DATA: return "client_delete_data"; case SERVER_DELETE_ATTRIBUTE: return "server_delete_attribute"; case CLIENT_INITIAL_DATA: return "client_initial_data"; default: log.error("Unknown type " + type); return "unknown"; } } }