build.bazel.remote.execution.v2.DigestKt.kt Maven / Gradle / Ivy
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: build/bazel/remote/execution/v2/remote_execution.proto
// Generated files should ignore deprecation warnings
@file:Suppress("DEPRECATION")
package build.bazel.remote.execution.v2;
@kotlin.jvm.JvmName("-initializedigest")
public inline fun digest(block: build.bazel.remote.execution.v2.DigestKt.Dsl.() -> kotlin.Unit): build.bazel.remote.execution.v2.Digest =
build.bazel.remote.execution.v2.DigestKt.Dsl._create(build.bazel.remote.execution.v2.Digest.newBuilder()).apply { block() }._build()
/**
* ```
* A content digest. A digest for a given blob consists of the size of the blob
* and its hash. The hash algorithm to use is defined by the server.
*
* The size is considered to be an integral part of the digest and cannot be
* separated. That is, even if the `hash` field is correctly specified but
* `size_bytes` is not, the server MUST reject the request.
*
* The reason for including the size in the digest is as follows: in a great
* many cases, the server needs to know the size of the blob it is about to work
* with prior to starting an operation with it, such as flattening Merkle tree
* structures or streaming it to a worker. Technically, the server could
* implement a separate metadata store, but this results in a significantly more
* complicated implementation as opposed to having the client specify the size
* up-front (or storing the size along with the digest in every message where
* digests are embedded). This does mean that the API leaks some implementation
* details of (what we consider to be) a reasonable server implementation, but
* we consider this to be a worthwhile tradeoff.
*
* When a `Digest` is used to refer to a proto message, it always refers to the
* message in binary encoded form. To ensure consistent hashing, clients and
* servers MUST ensure that they serialize messages according to the following
* rules, even if there are alternate valid encodings for the same message:
*
* * Fields are serialized in tag order.
* * There are no unknown fields.
* * There are no duplicate fields.
* * Fields are serialized according to the default semantics for their type.
*
* Most protocol buffer implementations will always follow these rules when
* serializing, but care should be taken to avoid shortcuts. For instance,
* concatenating two messages to merge them may produce duplicate fields.
* ```
*
* Protobuf type `build.bazel.remote.execution.v2.Digest`
*/
public object DigestKt {
@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)
@com.google.protobuf.kotlin.ProtoDslMarker
public class Dsl private constructor(
private val _builder: build.bazel.remote.execution.v2.Digest.Builder
) {
public companion object {
@kotlin.jvm.JvmSynthetic
@kotlin.PublishedApi
internal fun _create(builder: build.bazel.remote.execution.v2.Digest.Builder): Dsl = Dsl(builder)
}
@kotlin.jvm.JvmSynthetic
@kotlin.PublishedApi
internal fun _build(): build.bazel.remote.execution.v2.Digest = _builder.build()
/**
* ```
* The hash. In the case of SHA-256, it will always be a lowercase hex string
* exactly 64 characters long.
* ```
*
* `string hash = 1;`
*/
public var hash: kotlin.String
@JvmName("getHash")
get() = _builder.getHash()
@JvmName("setHash")
set(value) {
_builder.setHash(value)
}
/**
* ```
* The hash. In the case of SHA-256, it will always be a lowercase hex string
* exactly 64 characters long.
* ```
*
* `string hash = 1;`
*/
public fun clearHash() {
_builder.clearHash()
}
/**
* ```
* The size of the blob, in bytes.
* ```
*
* `int64 size_bytes = 2;`
*/
public var sizeBytes: kotlin.Long
@JvmName("getSizeBytes")
get() = _builder.getSizeBytes()
@JvmName("setSizeBytes")
set(value) {
_builder.setSizeBytes(value)
}
/**
* ```
* The size of the blob, in bytes.
* ```
*
* `int64 size_bytes = 2;`
*/
public fun clearSizeBytes() {
_builder.clearSizeBytes()
}
}
}
@kotlin.jvm.JvmSynthetic
public inline fun build.bazel.remote.execution.v2.Digest.copy(block: `build.bazel.remote.execution.v2`.DigestKt.Dsl.() -> kotlin.Unit): build.bazel.remote.execution.v2.Digest =
`build.bazel.remote.execution.v2`.DigestKt.Dsl._create(this.toBuilder()).apply { block() }._build()