/** * */ package javax.jmdns.impl.constants; /** * DNS operation code. * * @author Arthur van Hoff, Jeff Sonstein, Werner Randelshofer, Pierre Frisch, Rick Blair */ public enum DNSOperationCode { /** * Query [RFC1035] */ Query("Query", 0), /** * IQuery (Inverse Query, Obsolete) [RFC3425] */ IQuery("Inverse Query", 1), /** * Status [RFC1035] */ Status("Status", 2), /** * Unassigned */ Unassigned("Unassigned", 3), /** * Notify [RFC1996] */ Notify("Notify", 4), /** * Update [RFC2136] */ Update("Update", 5); /** * DNS RCode types are encoded on the last 4 bits */ static final int OpCode_MASK = 0x7800; private final String _externalName; private final int _index; DNSOperationCode(String name, int index) { _externalName = name; _index = index; } /** * Return the string representation of this type * * @return String */ public String externalName() { return _externalName; } /** * Return the numeric value of this type * * @return String */ public int indexValue() { return _index; } /** * @param flags * @return label */ public static DNSOperationCode operationCodeForFlags(int flags) { int maskedIndex = (flags & OpCode_MASK) >> 11; for (DNSOperationCode aCode : DNSOperationCode.values()) { if (aCode._index == maskedIndex) return aCode; } return Unassigned; } @Override public String toString() { return this.name() + " index " + this.indexValue(); } }