/**
  * This method stores the ID of a traversed peer by the query and additionally specifies how many
  * matches were added, at which level the added peer is situated in the tree and if the peer could
  * solve this clause.
  *
  * @param nodeInfo contains the ID of the traversed peer
  * @param level contains the level of the traversed peer
  * @param replies contains the amount of matches, which were added by the peer
  * @param querySolved specifies if the traversed peer could solve this clause
  */
 public void addReplyingPeer(
     SkyNetNodeInfo nodeInfo, int level, int replies, boolean querySolved) {
   replyingPeers.put(
       nodeInfo.getSkyNetID().getID(),
       new QueryReplyingPeer(nodeInfo.getSkyNetID(), level, replies, querySolved));
   if (querySolved) {
     solvingPeer = nodeInfo;
     solvingLevel = level;
   }
 }
 /**
  * This method returns the information of the current Parent-Coordinator, which is required to
  * address the Parent-Coordinator.
  *
  * @return the <code>SkyNetNodeInfo</code> of the ParentCoordinator
  */
 public SkyNetNodeInfo getParentCoordinator() {
   if (parentCoordinator != null) {
     if (parentCoordinator.isComplete()) {
       return parentCoordinator.clone();
     } else {
       return null;
     }
   } else {
     return null;
   }
 }
  void lookupOperationSucceeded(Operation<OverlayContact<OverlayID<?>>> op) {
    LookupResult result = treeHandlerDelegator.lookupOperationSucceeded(op);
    parentCoordinator =
        new SkyNetNodeInfoImpl(
            result.getSkyNetID(),
            coordinatorKey,
            DefaultTransInfo.getTransInfo(
                result.getContact().getTransInfo().getNetId(), skyNetNode.getPort()),
            level);
    log.info(
        parentCoordinator.toString()
            + " is parentCoordinator of "
            + skyNetNode.getSkyNetNodeInfo().toString());

    skyNetNode.getMetricUpdateStrategy().sendNextDataUpdate();
  }