/*******************************************************************************
* Copyright (c) 2007, 2013 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.tcf.services;
import java.util.Map;
import org.eclipse.tcf.protocol.IService;
import org.eclipse.tcf.protocol.IToken;
/**
* IPathMap service manages file path translation across systems.
*
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IPathMap extends IService {
static final String NAME = "PathMap";
/**
* Path mapping rule property names.
*/
static final String
/** String, rule ID */
PROP_ID = "ID",
/** String, source, or compile-time file path */
PROP_SOURCE = "Source",
/** String, destination, or run-time file path */
PROP_DESTINATION = "Destination",
/** String, symbols context group ID or name, deprecated - use ContextQuery */
PROP_CONTEXT = "Context",
/** String, contexts query, see IContextQuery */
PROP_CONTEXT_QUERY = "ContextQuery",
/** String, */
PROP_HOST = "Host",
/** String, file access protocol, see PROTOCOL_*, default is regular file */
PROP_PROTOCOL = "Protocol";
/**
* PROP_PROTOCOL values.
*/
static final String
/** Regular file access using system calls */
PROTOCOL_FILE = "file",
/** File should be accessed using File System service on host */
PROTOCOL_HOST = "host",
/** File should be accessed using File System service on target */
PROTOCOL_TARGET = "target";
/**
* PathMapRule interface represents a single file path mapping rule.
*/
interface PathMapRule {
/**
* Get rule properties. See PROP_* definitions for property names.
* Properties are read only, clients should not try to modify them.
* @return Map of rule properties.
*/
Map<String,Object> getProperties();
/**
* Get rule unique ID.
* Same as getProperties().get(PROP_ID)
* @return rule ID.
*/
String getID();
/**
* Get compile-time file path.
* Same as getProperties().get(PROP_SOURCE)
* @return compile-time file path.
*/
String getSource();
/**
* Get run-time file path.
* Same as getProperties().get(PROP_DESTINATION)
* @return run-time file path.
*/
String getDestination();
/**
* Get host name of this rule.
* Same as getProperties().get(PROP_HOST)
* @return host name.
*/
String getHost();
/**
* Get file access protocol name.
* Same as getProperties().get(PROP_PROTOCOL)
* @return protocol name.
*/
String getProtocol();
/**
* Get context query that defines scope of the mapping rule, see also IContextQuery.
* Same as getProperties().get(PROP_CONTEXT_QUERY)
* @return context query expression, or null.
*/
String getContextQuery();
}
/**
* Retrieve file path mapping rules.
*
* @param done - call back interface called when operation is completed.
* @return - pending command handle.
*/
IToken get(DoneGet done);
/**
* Client call back interface for get().
*/
interface DoneGet {
/**
* Called when file path mapping retrieval is done.
* @param error - error description if operation failed, null if succeeded.
* @param map - file path mapping data.
*/
void doneGet(IToken token, Exception error, PathMapRule[] map);
}
/**
* Set file path mapping rules.
*
* @param map - file path mapping rules.
* @param done - call back interface called when operation is completed.
* @return - pending command handle.
*/
IToken set(PathMapRule[] map, DoneSet done);
/**
* Client call back interface for set().
*/
interface DoneSet {
/**
* Called when file path mapping transmission is done.
* @param error - error description if operation failed, null if succeeded.
* @param map - memory map data.
*/
void doneSet(IToken token, Exception error);
}
/**
* Add path map event listener.
* @param listener - path map event listener to add.
*/
void addListener(PathMapListener listener);
/**
* Remove path map event listener.
* @param listener - path map event listener to remove.
*/
void removeListener(PathMapListener listener);
/**
* Service events listener interface.
*/
interface PathMapListener {
/**
* Called when path map changes.
*/
void changed();
}
}