blob: 2396eaeb7765e21de14b4675cc48531b889866a5 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.modular;
// Agents use this interface to create Entity references that can subsequently
// be dereferenced into an |Entity| interface using |EntityResolver|.
// Agents that create entity references must also expose an |EntityProvider|
// service in their application's outgoing services, so that agents can provide
// data for |Entity|s that they create. This interface is available through an
// agent's |AgentContext|.
interface EntityReferenceFactory {
// Agents call this to manufacture a reference for an Entity they will
// provide. Returns an opaque, persistable |entity_reference| that components
// can resolve into an |Entity| interface using |EntityResolver|. When data is
// requested from an |Entity| interface resolved from this |entity_reference|,
// the |cookie| associated with this |entity_reference| will be passed back to
// the |EntityProvider| of the Agent that originally created this reference.
//
// |cookie| should uniquely identify the |Entity| within the scope of the
// calling entity provider. For example, it may be used as the primary key
// value for a database.
1: CreateReference(string cookie) -> (string entity_reference);
};