private void collectRightNodeInfo()

in graphjet-core/src/main/java/com/twitter/graphjet/algorithms/counting/TopSecondDegreeByCount.java [161:195]


  private void collectRightNodeInfo(Request request) {
    for (Long2DoubleMap.Entry entry: request.getLeftSeedNodesWithWeight().long2DoubleEntrySet()) {
      long leftNode = entry.getLongKey();
      EdgeIterator edgeIterator = leftIndexedBipartiteGraph.getLeftNodeEdges(leftNode);
      if (edgeIterator == null) {
        continue;
      }

      int numEdgesPerNode = 0;
      double weight = entry.getDoubleValue();
      seenEdgesPerNode.clear();
      // Sequentially iterating through the latest MAX_EDGES_PER_NODE edges per node
      while (edgeIterator.hasNext() && numEdgesPerNode++ < RecommendationRequest.MAX_EDGES_PER_NODE) {
        long rightNode = edgeIterator.nextLong();
        byte edgeType = edgeIterator.currentEdgeType();
        long edgeMetadata = edgeIterator.currentMetadata();

        boolean hasSeenRightNodeFromEdge =
          seenEdgesPerNode.containsKey(rightNode) && seenEdgesPerNode.get(rightNode) == edgeType;

        if (!hasSeenRightNodeFromEdge
          && isEdgeUpdateValid(request, rightNode, edgeType, edgeMetadata)) {
          seenEdgesPerNode.put(rightNode, edgeType);
          updateNodeInfo(
            leftNode,
            rightNode,
            edgeType,
            edgeMetadata,
            weight,
            edgeIterator,
            request.getMaxSocialProofTypeSize());
        }
      }
    }
  }