package javax.megaco.message.descriptor;
import java.io.Serializable;
import javax.megaco.CommandEvent;
import javax.megaco.ParameterNotSetException;
import javax.megaco.message.CommandReq;
import javax.megaco.message.CommandResp;
import javax.megaco.message.Descriptor;
import javax.megaco.message.DescriptorType;
import javax.megaco.pkg.PkgItemParam;
import javax.megaco.pkg.GenericPkg.GenSigComplEvent;
import javax.megaco.pkg.ToneGenPkg.ToneGenParamInd;
import javax.megaco.pkg.ToneGenPkg.ToneGenParamTl;
import javax.megaco.pkg.ToneGenPkg.ToneGenPlayToneSignal;
/**
* The class extends JAIN MEGACO Descriptor. This class describes the stream
* descriptor. The SDP information set within the local and remote descriptor
* for this class is outside the scope of JAIN MEGACO. It is defined in
* javax.sdp.
*/
public class StreamDescriptor extends Descriptor implements Serializable {
private MediaStreamParam mediaStreamParam = null;
private Integer streamId = null;
/**
* Constructs a Stream Descriptor object. This extends the Descriptor class.
* It defines the Stream descriptor of the Megaco which contains the stream
* id and stream parameter. Multiple of these can be set in the media
* descriptor.
*/
public StreamDescriptor() {
super();
super.descriptorId = DescriptorType.M_STREAM_DESC;
}
/**
* This method cannot be overridden by the derived class. This method
* returns that the descriptor identifier is of type descriptor Stream. This
* method overrides the corresponding method of the base class Descriptor.
*
* @return descriptorId - Returns an integer value that identifies this
* stream object as the type of stream descriptor. It returns that
* it is Stream Descriptor i.e., M_STREAM_DESC.
*/
public int getDescriptorId() {
return super.descriptorId;
}
/**
* This method gets the Stream parameter for the stream descriptor. This can
* be used to get the local descriptor, remote descriptor and the local
* control descriptor.
*
* @return Returns the object reference of type stream parameter.
*/
public final MediaStreamParam getMediaStreamParam() {
return this.mediaStreamParam;
}
/**
* This method sets the stream parameter.
*
* @param streamParam
* - Sets the stream parameter consisiting of atleast one of
* local descriptor, local control and remote descriptor.
* @throws IllegalArgumentException
* if the parameters set for the stream parameter are such that
* the Stream Descriptor cannot be encoded.
*/
public final void setMediaStreamParam(MediaStreamParam streamParam) throws IllegalArgumentException {
// FIXME: add error checks
if (streamParam == null) {
throw new IllegalArgumentException("MediaStreamParam must not be null");
}
this.mediaStreamParam = streamParam;
}
/**
* The method can be used to get stream id in the stream descriptor. This
* method should be invoked after verifying that the port number is present
* using method isStreamIdPresent().
*
* @return streamId - The integer value of the stream id shall be returned.
* @throws javax.megaco.ParameterNotSetException
* - Thrown if streamId has not been set.
*/
public int getStreamId() throws javax.megaco.ParameterNotSetException {
if (this.streamId == null) {
throw new ParameterNotSetException();
}
return this.streamId.intValue();
}
/**
* The method can be used to set stream id in the stream descriptor.
*
* @param streamId
* - The integer value of the stream id shall be set.
* @throws IllegalArgumentException
* - Thrown if streamId is set with an invalid value.
*/
public void setStreamId(int streamId) throws IllegalArgumentException {
if (streamId <= 0) {
throw new IllegalArgumentException("StreanId must not be less or equal to zero");
}
this.streamId = new Integer(streamId);
}
/**
* This method is used for checking if the Stream Id is present for this
* descriptor or not.
*
* @return
*/
public boolean isStreamIdPresent() {
return this.streamId != null;
}
}