tikhomirov@217: /* tikhomirov@217: * Copyright (c) 2011 TMate Software Ltd tikhomirov@217: * tikhomirov@217: * This program is free software; you can redistribute it and/or modify tikhomirov@217: * it under the terms of the GNU General Public License as published by tikhomirov@217: * the Free Software Foundation; version 2 of the License. tikhomirov@217: * tikhomirov@217: * This program is distributed in the hope that it will be useful, tikhomirov@217: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@217: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@217: * GNU General Public License for more details. tikhomirov@217: * tikhomirov@217: * For information on how to redistribute this software under tikhomirov@217: * the terms of a license other than GNU General Public License tikhomirov@217: * contact TMate Software at support@hg4j.com tikhomirov@217: */ tikhomirov@217: package org.tmatesoft.hg.internal; tikhomirov@217: tikhomirov@217: /** tikhomirov@217: * EXPERIMENTAL. tikhomirov@217: * Mix-in for RevlogStream.Inspector to get informed about start and end of the iteration tikhomirov@217: * tikhomirov@217: * @author Artem Tikhomirov tikhomirov@217: * @author TMate Software Ltd. tikhomirov@217: */ tikhomirov@241: @Experimental(reason="Experimenting whether such approach pays off") tikhomirov@217: public interface Lifecycle { tikhomirov@217: tikhomirov@241: /** tikhomirov@241: * @param count approximate number of iterations. tikhomirov@241: * @param callback callback to communicate with RevlogStream (now to stop iteration only) tikhomirov@241: * @param token identifier of the process tikhomirov@241: */ tikhomirov@217: public void start(int count, Callback callback, Object token); tikhomirov@241: tikhomirov@241: /** tikhomirov@241: * @param token identifier of the process, identical to the one passed in {@link #start(int, Callback, Object)} of this iteration tikhomirov@241: */ tikhomirov@217: public void finish(Object token); tikhomirov@217: tikhomirov@241: /** tikhomirov@241: * Access to RevlogStream facilities. tikhomirov@241: */ tikhomirov@217: interface Callback { tikhomirov@217: void stop(); tikhomirov@217: } tikhomirov@217: tikhomirov@217: class BasicCallback implements Callback { tikhomirov@217: private boolean done = false; tikhomirov@217: tikhomirov@217: public void stop() { tikhomirov@217: done = true; tikhomirov@217: } tikhomirov@217: public boolean isStopped() { tikhomirov@217: return done; tikhomirov@217: } tikhomirov@217: } tikhomirov@217: }