package com.bigdata.service;
/**
* Run states for the {@link AbstractTransactionService}.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
* @version $Id$
*/
public enum TxServiceRunState {
/**
* During startup.
*/
Starting(0),
/**
* While running (aka open).
*/
Running(1),
/**
* When shutting down normally.
*/
Shutdown(2),
/**
* When shutting down immediately.
*/
ShutdownNow(3),
/**
* When halted.
*/
Halted(4);
private TxServiceRunState(int val) {
this.val = val;
}
final private int val;
public int value() {
return val;
}
public boolean isTransitionLegal(final TxServiceRunState newval) {
if (this == Starting) {
if (newval == Running)
return true;
if (newval == Halted)
return true;
} else if (this == Running) {
if (newval == Shutdown)
return true;
if (newval == ShutdownNow)
return true;
} else if (this == Shutdown) {
if (newval == ShutdownNow)
return true;
if (newval == Halted)
return true;
} else if (this == ShutdownNow) {
if (newval == Halted)
return true;
}
return false;
}
}