@Override
  public SubscriptionPollPayload deserialize(final ByteBuffer buffer) {
    final Map<String, List<Tablet>> tabletsWithDBInfo = new HashMap<>();
    final int size = ReadWriteIOUtils.readInt(buffer);
    for (int i = 0; i < size; ++i) {
      final String databaseName = ReadWriteIOUtils.readString(buffer);
      final int tabletsSize = ReadWriteIOUtils.readInt(buffer);
      final List<Tablet> tablets = new ArrayList<>();
      for (int j = 0; j < tabletsSize; ++j) {
        tablets.add(Tablet.deserialize(buffer));
      }
      tabletsWithDBInfo.put(databaseName, tablets);
    }
    this.tablets = tabletsWithDBInfo;
    this.nextOffset = ReadWriteIOUtils.readInt(buffer);
    return this;
  }
The field to be filled in the next {@link PollTabletsPayload} request.

<ul>
  <li>If nextOffset is 1, it indicates that the current payload is the first payload (its
      tablets are empty) and the fetching should continue.
  <li>If nextOffset is negative (or zero), it indicates all tablets have been fetched, and
      -nextOffset represents the total number of tablets.
</ul>
iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java