cdt/cdt_6_0_x/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IBreakpointAttributeTranslatorExtension.java
author l12wang
Wed, 11 Nov 2009 14:48:30 -0600
changeset 112 6b1088abccf8
child 117 09f3d307f081
permissions -rw-r--r--
Reworked BreakpointsMediator. See Eclipse bug 292468.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
112
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     1
/*******************************************************************************
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     2
 * Copyright (c) 2008 Wind River Systems and others.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     7
 * 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     8
 * Contributors:
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
     9
 *     Wind River Systems - initial API and implementation
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    10
 *******************************************************************************/
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    11
package org.eclipse.cdt.dsf.debug.service;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    12
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    13
import java.util.List;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    14
import java.util.Map;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    15
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    16
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    17
import org.eclipse.cdt.dsf.concurrent.ThreadSafeAndProhibitedFromDsfExecutor;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    18
import org.eclipse.cdt.dsf.debug.service.BreakpointsMediator.BreakpointEventType;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    19
import org.eclipse.cdt.dsf.debug.service.BreakpointsMediator.ITargetBreakpointInfo;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    20
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    21
import org.eclipse.core.runtime.CoreException;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    22
import org.eclipse.debug.core.model.IBreakpoint;
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    23
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    24
/**
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    25
 * Breakpoint attribute translator interface
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    26
 * 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    27
 * @since 2.1
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    28
 */
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    29
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    30
@ThreadSafeAndProhibitedFromDsfExecutor("")
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    31
public interface IBreakpointAttributeTranslatorExtension extends IBreakpointAttributeTranslator {
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    32
	/**
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    33
	 * Convert all attributes of the given platform breakpoint (BP) to
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    34
	 * attributes of potential target breakpoints. Two tasks are involved:<br>
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    35
	 * 1. Convert the attributes to debugger specific ones, if needed. For
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    36
	 * instance, GDB implementation has its own breakpoint attribute keys. <br>
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    37
	 * 2. Resolve the breakpoint. A platform BP may be mapped to two or more
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    38
	 * target BPs, e.g. a breakpoint in an in-line function may be mapped to
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    39
	 * several target BPs, or a thread-specific BP may be mapped to several
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    40
	 * target BPs each of which is for one thread. This method will return an
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    41
	 * attribute map for each of the target BP.<br>
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    42
	 * <br>
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    43
	 * This method must be called in DSF execution thread.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    44
	 * 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    45
	 * @param context
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    46
	 *            - a IBreakpointsTargetDMContext object (which could be a
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    47
	 *            process or a loaded module) in which we locate target BPs for
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    48
	 *            the platform BP.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    49
	 * @param breakpoint
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    50
	 *            - platform breakpoint.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    51
	 * @param bpManagerEnabled
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    52
	 *            - flag from platform breakpoint manager indicating that all
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    53
	 *            breakpoints are enabled.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    54
	 * @param drm
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    55
	 *            - on completion of the request, the DataRequestMonitor
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    56
	 *            contains one or more attribute maps each of which
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    57
	 *            corresponding to one target breakpoint.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    58
	 * @throws CoreException
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    59
	 */
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    60
    public void getTargetBreakpointAttributes(IBreakpointsTargetDMContext context, IBreakpoint breakpoint, 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    61
    		boolean bpManagerEnabled, DataRequestMonitor<List<Map<String, Object>>> drm);
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    62
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    63
    /**
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    64
     * Convert platform breakpoint attributes to target-recognizable attributes. 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    65
     * This method does not perform task #2 done by {@link this#getTargetBreakpointAttributes(List, IBreakpoint, boolean)}.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    66
     * 
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    67
     * @param platformBPAttrDelta
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    68
     * @return
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    69
     */
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    70
    public Map<String, Object> convertAttributeDelta(Map<String, Object> platformBPAttrDelta);
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    71
        
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    72
    /**
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    73
     * Update platform about breakpoint status change, e.g. breakpoint installed on target successfully or breakpoint
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    74
     * removed from target successfully.
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    75
     *  
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    76
     * @param bpsInfo
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    77
     * @param eventType
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    78
     */
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    79
    public void updateBreakpointsStatus(Map<IBreakpoint, Map<IBreakpointsTargetDMContext, ITargetBreakpointInfo[]>> bpsInfo, BreakpointEventType eventType);
6b1088abccf8 Reworked BreakpointsMediator. See Eclipse bug 292468.
l12wang
parents:
diff changeset
    80
}