/*
* 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.messaging;
/**
* Common interface for all messages.
* <p>Structure of messages is designed according to
* JMS Message interface. Message is composed of header and body.
* Header contains commonly used pre-defined headers
* and extensible headers.</p>
*
* <p>Each message has correlation ID that is never used so far and is subject to be removed in future.</p>
*
* <p>Message has type and number of properties.</p>
*
* @author The Red5 Project (red5@osflash.org)
* @author Steven Gong (steven.gong@gmail.com)
*/
public interface IMessage {
/**
* Return message id
* @return Message id
*/
String getMessageID();
/**
* Setter for new message id
* @param id Message id
*/
void setMessageID(String id);
/**
* Return correlation id
* @return Correlation id
*/
String getCorrelationID();
/**
* Setter for correlation id
* @param id Correlation id
*/
void setCorrelationID(String id);
/**
* Return message type
* @return Message type
*/
String getMessageType();
/**
* Setter for message type
* @param type Message type
*/
void setMessageType(String type);
/**
* Getter for boolean property
* @param name Boolean property name
* @return Boolean property
*/
boolean getBooleanProperty(String name);
/**
* Add boolean property to message
* @param name Boolean property name
* @param value Boolean property value
*/
void setBooleanProperty(String name, boolean value);
/**
* Add byte property to message
* @param name Byte property name
* @return Byte property value
*/
byte getByteProperty(String name);
/**
* Add byte property to message
* @param name Byte property name
* @param value Byte property value
*/
void setByteProperty(String name, byte value);
/**
* Return double property by name
* @param name Double property name
* @return Double property value
*/
double getDoubleProperty(String name);
/**
* Add double property to message
* @param name Double property name
* @param value Double property value
*/
void setDoubleProperty(String name, double value);
/**
* Return float property by name
* @param name Float property name
* @return Float property value
*/
float getFloatProperty(String name);
/**
* Add float property to message
* @param name Float property name
* @param value Float property value
*/
void setFloatProperty(String name, float value);
/**
* Return int property by name
* @param name Int property name
* @return Int property value
*/
int getIntProperty(String name);
/**
* Add int property to message
* @param name Int property name
* @param value Int property value
*/
void setIntProperty(String name, int value);
/**
* Return long property to message
* @param name Long property name
* @return Long property value
*/
long getLongProperty(String name);
/**
* Add long property to message
* @param name Long property name
* @param value Long property value
*/
void setLongProperty(String name, long value);
/**
* Return short property to message
* @param name Short property name
* @return Short property value
*/
short getShortProperty(String name);
/**
* Add short property to message
* @param name Short property name
* @param value Short property value
*/
void setShortProperty(String name, short value);
/**
* Return string property to message
* @param name String property name
* @return String property value
*/
String getStringProperty(String name);
/**
* Add string property to message
* @param name String property name
* @param value String property value
*/
void setStringProperty(String name, String value);
/**
* Return object property to message
* @param name Object property name
* @return Object property value
*/
Object getObjectProperty(String name);
/**
* Add object property to message
* @param name Object property name
* @param value Object property value
*/
void setObjectProperty(String name, Object value);
}