package javax.megaco.message.descriptor; import java.io.Serializable; /** * Stream mode constants used in package javax.megaco.message.descriptor. This * defines the stream modes for the megaco package. */ public class StreamMode implements Serializable { /** * Identifies stream mode to be send only. Its value shall be set to 0. */ public static final int M_SEND_ONLY = 0; /** * Identifies stream mode to be receive only. Its value shall be set to 1. */ public static final int M_RECV_ONLY = 1; /** * Identifies stream mode to be "send receive". Its value shall be set to 2. */ public static final int M_SEND_RECV = 2; /** * Identifies stream mode to be "inactive". Its value shall be set to 3. */ public static final int M_INACTIVE = 3; /** * Identifies stream mode to be "loopback". Its value shall be set to 4. */ public static final int M_LOOPBACK = 4; /** * Identifies a StreamMode object that constructs the class with the * constant M_SEND_ONLY. Since it is reference to static final * object, it prevents further instantiation of the same object in the * system. */ public static final StreamMode SEND_ONLY = new StreamMode(M_SEND_ONLY); /** * Identifies a StreamMode object that constructs the class with the * constant M_SEND_RECV. Since it is reference to static final * object, it prevents further instantiation of the same object in the * system. */ public static final StreamMode SEND_RECV = new StreamMode(M_SEND_RECV); /** * Identifies a StreamMode object that constructs the class with the * constant M_RECV_ONLY. Since it is reference to static final * object, it prevents further instantiation of the same object in the * system. */ public static final StreamMode RECV_ONLY = new StreamMode(M_RECV_ONLY); /** * Identifies a StreamMode object that constructs the class with the * constant M_INACTIVE. Since it is reference to static final * object, it prevents further instantiation of the same object in the * system. */ public static final StreamMode INACTIVE = new StreamMode(M_INACTIVE); /** * Identifies a StreamMode object that constructs the class with the * constant M_LOOPBACK. Since it is reference to static final * object, it prevents further instantiation of the same object in the * system. */ public static final StreamMode LOOPBACK = new StreamMode(M_LOOPBACK); private int streamMode = -1; /** * * Constructs an class that specifies the stream mode in the local control * descriptor. * * @param stream_mode */ private StreamMode(int stream_mode) { this.streamMode = stream_mode; } /** * This method returns one of the static field constants defined in this * class. * * @return Returns an integer value that identifies the stream mode to be * one of send only or receive only or send receive or inactive or * loopback. */ public int getStreamMode() { return this.streamMode; } /** * Returns reference of the StreamMode object that identifies the stream * mode as value passed to this method. * * @param value * - It is one of the possible values of the static constant that * this class provides. * @return Returns reference of the StreamMode object. * @throws IllegalArgumentException * - If the value passed to this method is invalid, then this * exception is raised. */ public static final StreamMode getObject(int value) throws IllegalArgumentException { switch (value) { case M_INACTIVE: return INACTIVE; case M_LOOPBACK: return LOOPBACK; case M_RECV_ONLY: return RECV_ONLY; case M_SEND_ONLY: return SEND_ONLY; case M_SEND_RECV: return SEND_RECV; default: throw new IllegalArgumentException("Wrong value passed as StreamMode: " + value); } } /** * This method must be implemented to perform instance substitution during * serialization. This method is required for reference comparison. This * method if not implimented will simply fail each time we compare an * Enumeration value against a de-serialized Enumeration instance. * * @return */ private Object readResolve() { return getObject(this.streamMode); } @Override public String toString() { switch (this.streamMode) { case M_INACTIVE: return "StreamMode[INACTIVE]"; case M_LOOPBACK: return "StreamMode[LOOPBACK]"; case M_RECV_ONLY: return "StreamMode[RECV_ONLY]"; case M_SEND_ONLY: return "StreamMode[SEND_ONLY]"; case M_SEND_RECV: return "StreamMode[SEND_RECV]"; default: return "StreamMode[" + this.streamMode + "]"; } } }