blob: 178ee8f35ddef2216df7aa18ff4fb3579e34946a [file] [log] [blame] [view]
# New C++ FIDL bindings examples
This directory contains example code for using the new C++ bindings.
To use the unified bindings for a library `//examples/fidl/fuchsia.examples`,
declare the following dependency:
```gn
deps = [
"//examples/fidl/fuchsia.examples:fuchsia.examples_cpp",
]
```
and include the following header:
```cpp
#include <fidl/fuchsia.examples/cpp/fidl.h>
```
## Client example
<!-- TODO(https://fxbug.dev/42054534): write full-fledged tutorial for the
bindings as it matures. -->
To run the client example, run the `echo_realm` component.
This creates the client and server component instances and routes the
capabilities:
```posix-terminal
ffx component run /core/ffx-laboratory:echo_realm fuchsia-pkg://fuchsia.com/echo-cpp-client#meta/echo_realm.cm
```
Then, we can start the `echo_client` instance:
```posix-terminal
ffx component start /core/ffx-laboratory:echo_realm/echo_client
```
The server component starts when the client attempts to connect to the `Echo`
protocol. You should see the following output using `fx log`:
```none {:.devsite-disable-click-to-copy}
[echo_server][I] Running echo server
[echo_server][I] Incoming connection for fuchsia.examples.Echo
[echo_client][I] (Natural types) got response: hello
[echo_client][I] (Natural types) got response: hello
[echo_client][I] (Wire types) got response: hello
[echo_server][W] server error: FIDL endpoint was unbound due to peer closed, status: ZX_ERR_PEER_CLOSED (-24)
```