package diskCacheV111.pools; import java.io.Serializable; public class PoolV2Mode implements Serializable { private static final long serialVersionUID = -3620447515380724292L; public static final int ENABLED = 0x00 ; public static final int DISABLED = 0x01 ; public static final int DISABLED_FETCH = 0x02 ; public static final int DISABLED_STORE = 0x04 ; public static final int DISABLED_STAGE = 0x08 ; public static final int DISABLED_P2P_CLIENT = 0x10 ; public static final int DISABLED_P2P_SERVER = 0x20 ; public static final int DISABLED_DEAD = 0x40 ; public static final int DISABLED_STRICT = DISABLED | DISABLED_FETCH | DISABLED_STORE | DISABLED_STAGE | DISABLED_P2P_CLIENT | DISABLED_P2P_SERVER; public static final int DISABLED_RDONLY = DISABLED | DISABLED_STORE | DISABLED_STAGE | DISABLED_P2P_CLIENT ; private static final int RESILIENCE_ENABLED = 0x7F ; private static final int RESILIENCE_DISABLED = 0x80 ; private static final String [] __modeString = { "fetch" , "store" , "stage" , "p2p-client" , "p2p-server" , "dead" } ; private int _mode = ENABLED ; /* * For convenience. */ public synchronized boolean isResilienceEnabled() { return !((_mode & RESILIENCE_DISABLED) == RESILIENCE_DISABLED); } public synchronized void setResilienceEnabled(boolean isResilienceEnabled) { if (isResilienceEnabled) { _mode &= RESILIENCE_ENABLED; } else { _mode |= RESILIENCE_DISABLED; } } @Override public String toString() { int mode = getMode(); if (isEnabled(mode)) { if (isResilienceEnabled()) { return "enabled"; } return "enabled,noresilience"; } StringBuilder sb = new StringBuilder(); sb.append("disabled("); boolean first = true; for (String modeString: __modeString) { mode >>= 1; if ((mode & 1) != 0) { if (first) { first = false; } else { sb.append(','); } sb.append(modeString); } } if (!isResilienceEnabled()) { sb.append(",noresilience"); } sb.append(')'); return sb.toString(); } public PoolV2Mode() { this(ENABLED); } public PoolV2Mode(int mode) { _mode = mode; } public synchronized void setMode(int mode) { if(isEnabled(mode)) { _mode = mode; } else { _mode = mode | DISABLED; } } public synchronized int getMode() { return _mode; } public synchronized boolean isDisabled(int mask) { return (_mode & mask) == mask; } public synchronized boolean isDisabled() { return !isEnabled(_mode); } public synchronized boolean isEnabled() { return isEnabled(_mode); } @Override public synchronized boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof PoolV2Mode)) { return false; } return ((PoolV2Mode) obj)._mode == this._mode; } @Override public synchronized int hashCode() { return _mode; } private static boolean isEnabled(int mode) { return mode == ENABLED || mode == (ENABLED| RESILIENCE_DISABLED); } }