// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: build/bazel/remote/execution/v2/remote_execution.proto

package build.bazel.remote.execution.v2;

public interface ExecuteResponseOrBuilder extends
    // @@protoc_insertion_point(interface_extends:build.bazel.remote.execution.v2.ExecuteResponse)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * The result of the action.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ActionResult result = 1;</code>
   */
  boolean hasResult();
  /**
   * <pre>
   * The result of the action.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ActionResult result = 1;</code>
   */
  build.bazel.remote.execution.v2.ActionResult getResult();
  /**
   * <pre>
   * The result of the action.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ActionResult result = 1;</code>
   */
  build.bazel.remote.execution.v2.ActionResultOrBuilder getResultOrBuilder();

  /**
   * <pre>
   * True if the result was served from cache, false if it was executed.
   * </pre>
   *
   * <code>bool cached_result = 2;</code>
   */
  boolean getCachedResult();

  /**
   * <pre>
   * If the status has a code other than `OK`, it indicates that the action did
   * not finish execution. For example, if the operation times out during
   * execution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST
   * use this field for errors in execution, rather than the error field on the
   * `Operation` object.
   * If the status code is other than `OK`, then the result MUST NOT be cached.
   * For an error status, the `result` field is optional; the server may
   * populate the output-, stdout-, and stderr-related fields if it has any
   * information available, such as the stdout and stderr of a timed-out action.
   * </pre>
   *
   * <code>.google.rpc.Status status = 3;</code>
   */
  boolean hasStatus();
  /**
   * <pre>
   * If the status has a code other than `OK`, it indicates that the action did
   * not finish execution. For example, if the operation times out during
   * execution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST
   * use this field for errors in execution, rather than the error field on the
   * `Operation` object.
   * If the status code is other than `OK`, then the result MUST NOT be cached.
   * For an error status, the `result` field is optional; the server may
   * populate the output-, stdout-, and stderr-related fields if it has any
   * information available, such as the stdout and stderr of a timed-out action.
   * </pre>
   *
   * <code>.google.rpc.Status status = 3;</code>
   */
  com.google.rpc.Status getStatus();
  /**
   * <pre>
   * If the status has a code other than `OK`, it indicates that the action did
   * not finish execution. For example, if the operation times out during
   * execution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST
   * use this field for errors in execution, rather than the error field on the
   * `Operation` object.
   * If the status code is other than `OK`, then the result MUST NOT be cached.
   * For an error status, the `result` field is optional; the server may
   * populate the output-, stdout-, and stderr-related fields if it has any
   * information available, such as the stdout and stderr of a timed-out action.
   * </pre>
   *
   * <code>.google.rpc.Status status = 3;</code>
   */
  com.google.rpc.StatusOrBuilder getStatusOrBuilder();

  /**
   * <pre>
   * An optional list of additional log outputs the server wishes to provide. A
   * server can use this to return execution-specific logs however it wishes.
   * This is intended primarily to make it easier for users to debug issues that
   * may be outside of the actual job execution, such as by identifying the
   * worker executing the action or by providing logs from the worker's setup
   * phase. The keys SHOULD be human readable so that a client can display them
   * to a user.
   * </pre>
   *
   * <code>map&lt;string, .build.bazel.remote.execution.v2.LogFile&gt; server_logs = 4;</code>
   */
  int getServerLogsCount();
  /**
   * <pre>
   * An optional list of additional log outputs the server wishes to provide. A
   * server can use this to return execution-specific logs however it wishes.
   * This is intended primarily to make it easier for users to debug issues that
   * may be outside of the actual job execution, such as by identifying the
   * worker executing the action or by providing logs from the worker's setup
   * phase. The keys SHOULD be human readable so that a client can display them
   * to a user.
   * </pre>
   *
   * <code>map&lt;string, .build.bazel.remote.execution.v2.LogFile&gt; server_logs = 4;</code>
   */
  boolean containsServerLogs(
      java.lang.String key);
  /**
   * Use {@link #getServerLogsMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, build.bazel.remote.execution.v2.LogFile>
  getServerLogs();
  /**
   * <pre>
   * An optional list of additional log outputs the server wishes to provide. A
   * server can use this to return execution-specific logs however it wishes.
   * This is intended primarily to make it easier for users to debug issues that
   * may be outside of the actual job execution, such as by identifying the
   * worker executing the action or by providing logs from the worker's setup
   * phase. The keys SHOULD be human readable so that a client can display them
   * to a user.
   * </pre>
   *
   * <code>map&lt;string, .build.bazel.remote.execution.v2.LogFile&gt; server_logs = 4;</code>
   */
  java.util.Map<java.lang.String, build.bazel.remote.execution.v2.LogFile>
  getServerLogsMap();
  /**
   * <pre>
   * An optional list of additional log outputs the server wishes to provide. A
   * server can use this to return execution-specific logs however it wishes.
   * This is intended primarily to make it easier for users to debug issues that
   * may be outside of the actual job execution, such as by identifying the
   * worker executing the action or by providing logs from the worker's setup
   * phase. The keys SHOULD be human readable so that a client can display them
   * to a user.
   * </pre>
   *
   * <code>map&lt;string, .build.bazel.remote.execution.v2.LogFile&gt; server_logs = 4;</code>
   */

  build.bazel.remote.execution.v2.LogFile getServerLogsOrDefault(
      java.lang.String key,
      build.bazel.remote.execution.v2.LogFile defaultValue);
  /**
   * <pre>
   * An optional list of additional log outputs the server wishes to provide. A
   * server can use this to return execution-specific logs however it wishes.
   * This is intended primarily to make it easier for users to debug issues that
   * may be outside of the actual job execution, such as by identifying the
   * worker executing the action or by providing logs from the worker's setup
   * phase. The keys SHOULD be human readable so that a client can display them
   * to a user.
   * </pre>
   *
   * <code>map&lt;string, .build.bazel.remote.execution.v2.LogFile&gt; server_logs = 4;</code>
   */

  build.bazel.remote.execution.v2.LogFile getServerLogsOrThrow(
      java.lang.String key);
}
