// Copyright 2015 The Bazel Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Workaround
// https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 This
// file is copied from
// github.com/bazelbuild/bazel/blob/master/src/main/protobuf/worker_protocol.proto

syntax = "proto3";

package blaze.worker;

option java_package = "com.google.devtools.build.lib.worker";

// An input file.
message Input {
  // The path in the file system where to read this input artifact from. This is
  // either a path relative to the execution root (the worker process is
  // launched with the working directory set to the execution root), or an
  // absolute path.
  string path = 1;

  // A hash-value of the contents. The format of the contents is unspecified and
  // the digest should be treated as an opaque token.
  bytes digest = 2;
}

// This represents a single work unit that Bazel sends to the worker.
message WorkRequest {
  repeated string arguments = 1;

  // The inputs that the worker is allowed to read during execution of this
  // request.
  repeated Input inputs = 2;
}

// The worker sends this message to Bazel when it finished its work on the
// WorkRequest message.
message WorkResponse {
  int32 exit_code = 1;

  // This is printed to the user after the WorkResponse has been received and is supposed to contain
  // compiler warnings / errors etc. - thus we'll use a string type here, which gives us UTF-8
  // encoding.
  string output = 2;
}
