@Override public final void stop() throws Exception { Lock lock = Locks.write(readWriteLock); ensure(State.STARTED); try { logTransition("Stopping"); doStop(); current = State.STOPPED; logTransition("Stopped"); } catch (Throwable failure) { doFailed("stop", failure); } finally { lock.unlock(); } }
@Override public final void start() throws Exception { Lock lock = Locks.write(readWriteLock); ensure(State.NEW, State.STOPPED); try { logTransition("Starting"); doStart(); current = State.STARTED; logTransition("Started"); } catch (Throwable failure) { doFailed("start", failure); } finally { lock.unlock(); } }