class Resolver

Defined at line 1353 of file fidling/gen/sdk/fidl/fuchsia.process/fuchsia.process/hlcpp/fuchsia/process/cpp/fidl.h

An interface for resolving names to executables and library loaders.

An executable itself is often not sufficient to create a working process

because many executables also load shared libraries. On Fuchsia, there is no

global pool of shared libraries. Instead, every process has an associated

`fuchsia.ldsvc.Loader`, which provides access to a private pool of shared

libraries appropriate for that process.

This interface provides a protocol for resolving a name into both the

`zx.Handle:VMO` for the executable and the `fuchsia.ldsvc.Loader` for its

associated shared libraries.

This interface is rarely used directly. Instead, `fdio_spawn` and

`fdio_spawn_etc` use this interface internally when they try to run a file

with a `#!resolve` directive.

Public Members

static const char[] Name_

Public Methods

void ~Resolver ()
void Resolve (::std::string name, ResolveCallback callback)

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` -- in particular, it will have `ZX_RIGHT_EXECUTE`.

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.