Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: ed96042e737af9df86304ab579b57a26e74c06da (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                                               






                                                                         
                                                                               









                                                             
 

                                           






                                            


                 


                                                                       






                                                                         









                                                             
 







                                                                  












                                                           







                                                                        


                                                                       

                                                                          

























































                                                                             
                                                        


                                    
                                                 




                                                                             
 



                                         
                                             

                                                        


                                                                     


            
 






                                                           

                                                                     


                                     
# *****************************************************************************
# * Copyright (c) 2011, 2012 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
# *****************************************************************************

"""
PathMap service manages file path translation across systems.
"""

from tcf import services

NAME = "PathMap"

# Path mapping rule property names.

# String, contexts query, see IContextQuery
PROP_CONTEXT_QUERY = "ContextQuery"

# String, destination, or run-time file path
PROP_DESTINATION = "Destination"

# String
PROP_HOST = "Host"

# String, rule ID
PROP_ID = "ID"

# String, file access protocol, see PROTOCOL_*, default is regular file
PROP_PROTOCOL = "Protocol"

# String, source, or compile-time file path
PROP_SOURCE = "Source"

# Deprecated
# String, symbols context group ID or name, deprecated - use ContextQuery
PROP_CONTEXT = "Context"

# PROP_PROTOCOL values.
# 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"


class PathMapListener(object):
    """Pathmap event listener is notified when pathmap changes."""

    def changed(self):
        """Called when a pathmap has been changed."""
        pass


class PathMapRule(object):
    """
    PathMapRule represents a single file path mapping rule.
    """
    def __init__(self, props):
        self._props = props or {}

    def __str__(self):
        return str(self._props)

    def __json__(self):
        return self._props

    def getContextQuery(self):
        """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 None.
        """
        return self._props.get(PROP_CONTEXT_QUERY, None)

    def getProperties(self):
        """
        Get rule properties. See PROP_* definitions for property names.
        Context properties are read only, clients should not try to modify
        them.
        @return Map of rule properties.
        """
        return self._props

    def getID(self):
        """
        Get rule unique ID.
        Same as getProperties().get(PROP_ID)
        @return rule ID.
        """
        return self._props.get(PROP_ID)

    def getSource(self):
        """
        Get compile-time file path.
        Same as getProperties().get(PROP_SOURCE)
        @return compile-time file path.
        """
        return self._props.get(PROP_SOURCE)

    def getDestination(self):
        """
        Get run-time file path.
        Same as getProperties().get(PROP_DESTINATION)
        @return run-time file path.
        """
        return self._props.get(PROP_DESTINATION)

    def getHost(self):
        """
        Get host name of this rule.
        Same as getProperties().get(PROP_HOST)
        @return host name.
        """
        return self._props.get(PROP_HOST)

    def getProtocol(self):
        """
        Get file access protocol name.
        Same as getProperties().get(PROP_PROTOCOL)
        @return protocol name.
        """
        return self._props.get(PROP_PROTOCOL)


class PathMapService(services.Service):
    def getName(self):
        return NAME

    def get(self, done):
        """
        Retrieve file path mapping rules.

        @param done - call back interface called when operation is completed.
        @return - pending command handle.
        """
        return NotImplementedError("Abstract method")

    def set(self, pathMap, done):  # @ReservedAssignment
        """
        Set file path mapping rules.

        @param pathMap - file path mapping rules.
        @param done - call back interface called when operation is completed.
        @return - pending command handle.
        """
        return NotImplementedError("Abstract method")


class DoneGet(object):
    """
    Client call back interface for get().
    """
    def doneGet(self, token, error, pathMap):
        """
        Called when file path mapping retrieval is done.
        @param error - error description if operation failed, None if
                       succeeded.
        @param pathMap - file path mapping data.
        """
        pass


class DoneSet(object):
    """
    Client call back interface for set().
    """
    def doneSet(self, token, error):
        """
        Called when file path mapping transmission is done.
        @param error - error description if operation failed, None if
                       succeeded.
        @param map - memory map data.
        """
        pass

Back to the top