|  | // 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() => (); | 
|  | }; |