public static UndeleteRequest readFrom(DataInputStream stream, ClusterMap map) throws IOException {
    Short version = stream.readShort();
    if (version != UNDELETE_REQUEST_VERSION_1) {
      throw new IllegalStateException("Unknown undelete request version " + version);
    }
    int correlationId = stream.readInt();
    String clientId = Utils.readIntString(stream);
    BlobId id = new BlobId(stream, map);
    long operationTimeMs = stream.readLong();
    return new UndeleteRequest(correlationId, clientId, id, operationTimeMs);
  }
Constructs {@link UndeleteRequest} in given version.
@param correlationId correlationId of the undelete request
@param clientId clientId of the undelete request
@param blobId blobId of the undelete request
@param operationTimeMs the time when this operation is created (in ms).
@param version version of the {@link UndeleteRequest}.
ambry-protocol/src/main/java/com/github/ambry/protocol/UndeleteRequest.java