// Copyright 2019 The Cobalt 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.

syntax = "proto3";

option optimize_for = LITE_RUNTIME;

package cobalt.loader;

// Single installation slot.
message Installation {
  // Is the installation successful.
  bool is_successful  = 1;

  // Number of tries left for this installation.
  int32 num_tries_left = 2;

  // Priority of the installation.
  // Valid values are '0' to 'num_installations - 1',
  // with '0' being the highest priority.
  int32 priority = 3;
}

// Installation store for all installations.
message InstallationStore {
  // All the installation slots.
  repeated Installation installations = 1;

  // To which installation to roll forward to.
  // The value of -1 means no change is needed.
  // The updater sets the value and the loader performs the action.
  int32 roll_forward_to_installation = 2;
}
