Beispiel #1
0
  /** @see org.eclipse.cdt.debug.core.cdi.ICDISession#terminate(ICDITarget) */
  @Override
  public void terminate() throws CDIException {
    ProcessManager pMgr = getProcessManager();
    Target[] targets = pMgr.getTargets();
    for (int i = 0; i < targets.length; ++i) {
      if (!targets[i].getMISession().isTerminated()) {
        targets[i].getMISession().terminate();
      }
    }
    // Do not do the removeTargets(), Target.getMISession().terminate() will do it
    // via an event, MIGDBExitEvent of the mi session
    // removeTargets(targets);

    // wait ~2 seconds for the targets to be terminated.
    for (int i = 0; i < 2; ++i) {
      targets = pMgr.getTargets();
      if (targets.length == 0) {
        break;
      }
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        //
      }
    }
    // send our goodbyes.
    EventManager eMgr = (EventManager) getEventManager();
    eMgr.fireEvents(new ICDIEvent[] {new DestroyedEvent(this)});
    eMgr.removeEventListeners();
  }