Module Transfer.Plan

type upload_part = {
  1. part_number : Multipart.Part_number.t;
  2. offset : int64;
  3. length : int;
}

Runtime-neutral file part selected for UploadPart.

type download_range = {
  1. index : int;
  2. offset : int64;
  3. length : int;
  4. range : Range.t;
}

Runtime-neutral byte range selected for ranged GetObject.

val upload_parts : content_length:int64 -> part_size:int -> (upload_part list, Awskit.Error.t) Stdlib.result

Compute deterministic multipart upload parts. Rejects non-positive content lengths because an empty object should use PutObject.

val upload_part_seq : content_length:int64 -> part_size:int -> (upload_part Stdlib.Seq.t, Awskit.Error.t) Stdlib.result

Lazily enumerate deterministic multipart upload parts without building the whole plan list. Rejects non-positive content lengths because an empty object should use PutObject.

val download_ranges : content_length:int64 -> part_size:int -> (download_range list, Awskit.Error.t) Stdlib.result

Compute deterministic ranged-download byte ranges. Empty objects produce no ranges.

val download_range_seq : content_length:int64 -> part_size:int -> (download_range Stdlib.Seq.t, Awskit.Error.t) Stdlib.result

Lazily enumerate deterministic ranged-download byte ranges without building the whole plan list. Empty objects produce no ranges.