/*******************************************************************************
 * Copyright (c) 2011 Nokia and others.
 * 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:
 * Nokia - Initial API and implementation
 *******************************************************************************/

package org.eclipse.cdt.debug.edc.tests.tcfagent;

import org.eclipse.tm.tcf.protocol.IService;
import org.eclipse.tm.tcf.protocol.IToken;

/**
 * A TCF service for driving unit test. Add commands here when you want 
 * host test code to drive the {@link EDCTestAgent}.
 */
public interface IUnitTestDriver extends IService {
	/**
	 * This service name, as it appears on the wire - a TCF name of the service.
	 */
	public static final String NAME = "UnitTestDriver";

	/**
	 * Call back interface for a command that does not need reply.
	 */
	interface DoneWithNoReplyCommand {
		/**
		 * @param token
		 *            - command handle.
		 * @param error
		 *            - error object or null.
		 */
		void done(IToken token, Throwable error);
	}

	/**
	 * ============================================
	 * Commands for driving test of {@link ILogging} service
	 * ============================================
	 */
	public final static String COMMAND_LOGGING_WRITE = "Logging_Write";
	public final static String COMMAND_LOGGING_WRITELN = "Logging_Writeln";
	public final static String COMMAND_LOGGING_DIALOG = "Logging_Dialog";
	
	IToken loggingWrite(String msg, DoneWithNoReplyCommand done);
	IToken loggingWriteln(String msg, DoneWithNoReplyCommand done);
	IToken loggingDialog(String msg, DoneWithNoReplyCommand done);

}
