public void readFields()

in client-tez/src/main/java/org/apache/tez/common/ShuffleAssignmentsInfoWritable.java [104:159]


  public void readFields(DataInput dataInput) throws IOException {
    if (dataInput.readInt() == -1) {
      LOG.warn("shuffleAssignmentsInfo is null, no need read");
      return;
    }

    Map<Integer, List<ShuffleServerInfo>> partitionToServers = new HashMap<>();
    int partitionToServersSize = dataInput.readInt();
    if (partitionToServersSize != -1) {
      Integer partitionId;
      for (int i = 0; i < partitionToServersSize; i++) {
        partitionId = dataInput.readInt();
        List<ShuffleServerInfo> shuffleServerInfoList = new ArrayList<>();
        int shuffleServerInfoListSize = dataInput.readInt();
        if (shuffleServerInfoListSize != -1) {
          for (int i1 = 0; i1 < shuffleServerInfoListSize; i1++) {
            String id = dataInput.readUTF();
            String host = dataInput.readUTF();
            int port = dataInput.readInt();
            ShuffleServerInfo shuffleServerInfo = new ShuffleServerInfo(id, host, port);
            shuffleServerInfoList.add(shuffleServerInfo);
          }
        }

        partitionToServers.put(partitionId, shuffleServerInfoList);
      }
    }

    Map<ShuffleServerInfo, List<PartitionRange>> serverToPartitionRanges = new HashMap<>();
    int serverToPartitionRangesSize = dataInput.readInt();
    if (serverToPartitionRangesSize != -1) {
      for (int i = 0; i < serverToPartitionRangesSize; i++) {
        ShuffleServerInfo shuffleServerInfo;
        List<PartitionRange> partitionRangeList = new ArrayList<>();

        String id = dataInput.readUTF();
        String host = dataInput.readUTF();
        int port = dataInput.readInt();
        shuffleServerInfo = new ShuffleServerInfo(id, host, port);

        int partitionRangeListSize = dataInput.readInt();
        if (partitionRangeListSize != -1) {
          for (int i1 = 0; i1 < partitionRangeListSize; i1++) {
            int start = dataInput.readInt();
            int end = dataInput.readInt();
            PartitionRange partitionRange = new PartitionRange(start, end);
            partitionRangeList.add(partitionRange);
          }
        }
        serverToPartitionRanges.put(shuffleServerInfo, partitionRangeList);
      }
    }

    shuffleAssignmentsInfo =
        new ShuffleAssignmentsInfo(partitionToServers, serverToPartitionRanges);
  }