// Copyright 2018 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.process;

using fuchsia.ldsvc;
using zx;

const uint32 MAX_RESOLVE_NAME = 2048;

[Discoverable, Layout = "Simple"]
interface Resolver {
    // Resolves the given |name| to an |executable| and an shared library loader.
    //
    // If present, the |executable| is suitable for use as the |executable|
    // property of |LaunchInfo|. If present, the |ldsvc| is suitable for use as
    // the PA_LDSVC_LOADER handle when launching the process.
    //
    // For example, the resolver might locate the given |name| inside a package
    // and return the executable binary from the package as well as a shared
    // library loader scoped to that package.
    1: Resolve(string:MAX_RESOLVE_NAME name) -> (zx.status status,
                                                 handle<vmo>? executable,
                                                 fuchsia.ldsvc.Loader? ldsvc);
};