package net.java.slee.resource.diameter.cxdx.events.avp; import java.io.Serializable; import java.io.StreamCorruptedException; import net.java.slee.resource.diameter.base.events.avp.Enumerated; /** * <pre> * <b>6.3.17 Reason-Code AVP</b> * The Reason-Code AVP is of type Enumerated, and defines the reason for the network initiated * de-registration. The following values are defined: * * PERMANENT_TERMINATION (0) * NEW_SERVER_ASSIGNED (1) * SERVER_CHANGE (2) * REMOVE_S-CSCF (3) * * </pre> * * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> * @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a> */ public class ReasonCode implements Enumerated, Serializable { private static final long serialVersionUID = 1L; public static final int _PERMANENT_TERMINATION = 0; public static final int _NEW_SERVER_ASSIGNED = 1; public static final int _SERVER_CHANGE = 2; public static final int _REMOVE_S_CSCF = 3; public static final ReasonCode PERMANENT_TERMINATION = new ReasonCode(_PERMANENT_TERMINATION); public static final ReasonCode NEW_SERVER_ASSIGNED = new ReasonCode(_NEW_SERVER_ASSIGNED); public static final ReasonCode SERVER_CHANGE = new ReasonCode(_SERVER_CHANGE); public static final ReasonCode REMOVE_S_CSCF = new ReasonCode(_REMOVE_S_CSCF); private int value = -1; private ReasonCode(int value) { this.value = value; } public static ReasonCode fromInt(int type) { switch(type) { case _PERMANENT_TERMINATION: return PERMANENT_TERMINATION; case _NEW_SERVER_ASSIGNED: return NEW_SERVER_ASSIGNED; case _SERVER_CHANGE: return SERVER_CHANGE; case _REMOVE_S_CSCF: return REMOVE_S_CSCF; default: throw new IllegalArgumentException("Invalid Reason-Code value: " + type); } } public int getValue() { return value; } public String toString() { switch(value) { case _PERMANENT_TERMINATION: return "PERMANENT_TERMINATION"; case _NEW_SERVER_ASSIGNED: return "NEW_SERVER_ASSIGNED"; case _SERVER_CHANGE: return "SERVER_CHANGE"; case _REMOVE_S_CSCF: return "REMOVE_S_CSCF"; default: return "<Invalid Value>"; } } private Object readResolve() throws StreamCorruptedException { try { return fromInt(value); } catch (IllegalArgumentException iae) { throw new StreamCorruptedException("Invalid internal state found: " + value); } } }