diff options
Diffstat (limited to 'src/javax/jmdns/impl/constants/DNSState.java')
-rw-r--r-- | src/javax/jmdns/impl/constants/DNSState.java | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/src/javax/jmdns/impl/constants/DNSState.java b/src/javax/jmdns/impl/constants/DNSState.java new file mode 100644 index 0000000..8c652f5 --- /dev/null +++ b/src/javax/jmdns/impl/constants/DNSState.java @@ -0,0 +1,215 @@ +// Copyright 2003-2005 Arthur van Hoff, Rick Blair +// Licensed under Apache License version 2.0 +// Original license LGPL + +package javax.jmdns.impl.constants; + +/** + * DNSState defines the possible states for services registered with JmDNS. + * + * @author Werner Randelshofer, Rick Blair, Pierre Frisch + */ +public enum DNSState { + + /** + * + */ + PROBING_1("probing 1", StateClass.probing), + /** + * + */ + PROBING_2("probing 2", StateClass.probing), + /** + * + */ + PROBING_3("probing 3", StateClass.probing), + /** + * + */ + ANNOUNCING_1("announcing 1", StateClass.announcing), + /** + * + */ + ANNOUNCING_2("announcing 2", StateClass.announcing), + /** + * + */ + ANNOUNCED("announced", StateClass.announced), + /** + * + */ + CANCELING_1("canceling 1", StateClass.canceling), + /** + * + */ + CANCELING_2("canceling 2", StateClass.canceling), + /** + * + */ + CANCELING_3("canceling 3", StateClass.canceling), + /** + * + */ + CANCELED("canceled", StateClass.canceled), + /** + * + */ + CLOSING("closing", StateClass.closing), + /** + * + */ + CLOSED("closed", StateClass.closed); + + private enum StateClass { + probing, announcing, announced, canceling, canceled, closing, closed + } + + // private static Logger logger = Logger.getLogger(DNSState.class.getName()); + + private final String _name; + + private final StateClass _state; + + private DNSState(String name, StateClass state) { + _name = name; + _state = state; + } + + @Override + public final String toString() { + return _name; + } + + /** + * Returns the next advanced state.<br/> + * In general, this advances one step in the following sequence: PROBING_1, PROBING_2, PROBING_3, ANNOUNCING_1, ANNOUNCING_2, ANNOUNCED.<br/> + * or CANCELING_1, CANCELING_2, CANCELING_3, CANCELED Does not advance for ANNOUNCED and CANCELED state. + * + * @return next state + */ + public final DNSState advance() { + switch (this) { + case PROBING_1: + return PROBING_2; + case PROBING_2: + return PROBING_3; + case PROBING_3: + return ANNOUNCING_1; + case ANNOUNCING_1: + return ANNOUNCING_2; + case ANNOUNCING_2: + return ANNOUNCED; + case ANNOUNCED: + return ANNOUNCED; + case CANCELING_1: + return CANCELING_2; + case CANCELING_2: + return CANCELING_3; + case CANCELING_3: + return CANCELED; + case CANCELED: + return CANCELED; + case CLOSING: + return CLOSED; + case CLOSED: + return CLOSED; + default: + // This is just to keep the compiler happy as we have covered all cases before. + return this; + } + } + + /** + * Returns to the next reverted state. All states except CANCELED revert to PROBING_1. Status CANCELED does not revert. + * + * @return reverted state + */ + public final DNSState revert() { + switch (this) { + case PROBING_1: + case PROBING_2: + case PROBING_3: + case ANNOUNCING_1: + case ANNOUNCING_2: + case ANNOUNCED: + return PROBING_1; + case CANCELING_1: + case CANCELING_2: + case CANCELING_3: + return CANCELING_1; + case CANCELED: + return CANCELED; + case CLOSING: + return CLOSING; + case CLOSED: + return CLOSED; + default: + // This is just to keep the compiler happy as we have covered all cases before. + return this; + } + } + + /** + * Returns true, if this is a probing state. + * + * @return <code>true</code> if probing state, <code>false</code> otherwise + */ + public final boolean isProbing() { + return _state == StateClass.probing; + } + + /** + * Returns true, if this is an announcing state. + * + * @return <code>true</code> if announcing state, <code>false</code> otherwise + */ + public final boolean isAnnouncing() { + return _state == StateClass.announcing; + } + + /** + * Returns true, if this is an announced state. + * + * @return <code>true</code> if announced state, <code>false</code> otherwise + */ + public final boolean isAnnounced() { + return _state == StateClass.announced; + } + + /** + * Returns true, if this is a canceling state. + * + * @return <code>true</code> if canceling state, <code>false</code> otherwise + */ + public final boolean isCanceling() { + return _state == StateClass.canceling; + } + + /** + * Returns true, if this is a canceled state. + * + * @return <code>true</code> if canceled state, <code>false</code> otherwise + */ + public final boolean isCanceled() { + return _state == StateClass.canceled; + } + + /** + * Returns true, if this is a closing state. + * + * @return <code>true</code> if closing state, <code>false</code> otherwise + */ + public final boolean isClosing() { + return _state == StateClass.closing; + } + + /** + * Returns true, if this is a closing state. + * + * @return <code>true</code> if closed state, <code>false</code> otherwise + */ + public final boolean isClosed() { + return _state == StateClass.closed; + } + +} |