/** * Copyright (c) 2013-2016 Angelo ZERR and Genuitec LLC. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Piotr Tomiak <piotr@genuitec.com> - initial API and implementation */ package tern.server.protocol; /** * All collectors able to process server request asynchronously should implement * this interface. Only one of: timeout() or done() methods will be called when * processing a particular request. It is possible that timeout is called, even * though some results were already collected and are still being fed to the * collector. Any collection happening after timeout method is called should be * ignored, otherwise it may lead to race condition access. */ public interface ITernResultsAsyncCollector extends ITernResultsCollector { /** * Called when results weren't collected in a required time. * * @param reason */ void timeout(TimeoutReason reason); /** * Called when all results were successfully collected */ void done(); String getRequestDisplayName(); enum TimeoutReason { PREV_OPERATION_NOT_FINISHED, TIMED_OUT } }