// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module reaper;

import "services/reaper/transfer.mojom";

// Reaper maintains a graph of references between applications and based on that
// decides when to shut down applications.
interface Reaper {
  // Generates a secret that identifies the calling application for use with
  // reaper::Transfer::Complete().
  GetApplicationSecret() => (uint64 secret);

  // Create a new reference. A reference is composed of two nodes.Initially,
  // both nodes are owned by the calling application. Node ids must be unique
  // within a given application.
  CreateReference(uint32 source_node, uint32 target_node);

  // Drop a node. The node and containing reference both becomes invalid.
  DropNode(uint32 node);

  // Initiates a transfer of |node| to another application. Pass the other end
  // of |transfer| to the destination application. The destination application
  // should then call Complete() on |transfer| to finalize the transfer.
  StartTransfer(uint32 node, Transfer& transfer);

  // No-op used for creating ordering between interfaces.
  Ping() => ();
};
