| # lib/fidl-service | 
 |  | 
 | A support library for FIDL service directories. | 
 |  | 
 | ## Purpose | 
 |  | 
 | The purpose of this library is to provide a way to both consume or publish FIDL | 
 | service directories. That is, this library provides the building blocks for | 
 | developing clients or servers of FIDL service directories. | 
 |  | 
 | A FIDL service directory is a way to represent a FIDL service within the | 
 | namespace of a process. For example, take the following FIDL service: | 
 |  | 
 | ``` | 
 | library fuchsia.examples; | 
 |  | 
 | using fidl.examples.echo; | 
 |  | 
 | service MyService { | 
 |   fidl.examples.echo.Echo regular_echo; | 
 |   fidl.examples.echo.Echo reversed_echo; | 
 | }; | 
 | ``` | 
 |  | 
 | The FIDL service named MyService can be represented within the namespace of a | 
 | process with the following structure: | 
 |  | 
 | ``` | 
 | /svc/fuchsia.examples.MyService | 
 | /svc/fuchsia.examples.MyService/default | 
 | /svc/fuchsia.examples.MyService/default/regular | 
 | /svc/fuchsia.examples.MyService/default/reversed | 
 | /svc/fuchsia.examples.MyService/alternate | 
 | /svc/fuchsia.examples.MyService/alternate/regular | 
 | /svc/fuchsia.examples.MyService/alternate/reversed | 
 | ``` | 
 |  | 
 | Here we can see that `MyService` has two instances, `default` and `alternate`, | 
 | and each instance has the members `regular` and `reversed`. | 
 |  | 
 | Using this library, we can interact we can interact with FIDL service | 
 | directories in code more simply. For example, here is how we would open the | 
 | `alternate` instance of `MyService` and bind to the member `regular`: | 
 |  | 
 | ``` | 
 | auto alternate = fidl::OpenService<fuchsia::examples::MyService>("alternate"); | 
 | auto regular = alternate.regular_echo().Connect().Bind(); | 
 | ``` | 
 |  | 
 | For more examples, please see `//examples/fidl`. | 
 |  | 
 | ## Dependencies | 
 |  | 
 | This library depends on: | 
 | * `fuchsia.io` - This is required to use `fuchsia::io::Directory`. | 
 | * `lib/async` - This is required to use `async::WaitMethod`. | 
 | * `lib/fdio` - This is required to use `fdio_ns_t`. | 
 | * `lib/fidl` - This is required to interact with FIDL. | 
 | * `lib/vfs` - This required to use `vfs::PseudoDir`. | 
 |  | 
 | Generated FIDL service code will depend on this library, and therefore inherit | 
 | the same set of dependencies. | 
 |  | 
 | Additionally, server processes may want to use `lib/sys` in order to simplify | 
 | their implementation. |