| keywords: docType:Overview,category:FuchsiaSystems,docType:ApiReference,category:FuchsiaSecurityAndCompliance,category:FuchsiaFidl |
| keywords_public: FIDL, examples, Fuchsia, calculator, key-value store, canvas, protocol, data types, data flow patterns, acknowledgement pattern, alias, anonymous type, bits, discoverable, enum, feed forward pattern, generated name, handle rights, infallible two way method, named payload, optionality, pagination pattern, persistence, protocol end, recursive type, resource type, scalar type, size constraint, struct payload, table payload, throttled event pattern, union payload |
| description: This page provides a catalog of FIDL examples and a reference of FIDL language concepts, demonstrating how to implement various patterns and data types in Fuchsia. |
| <!-- These keywords are for search widget on fuchsia.dev. Do not remove. --> |
| |
| # FIDL examples |
| |
| This is a catalog of FIDL examples intended to demonstrate FIDL concepts through |
| simplified implementations of real software workflows. |
| |
| ## Example index |
| |
| The following examples sequentially demonstrate useful FIDL concepts. |
| |
| <!-- DO_NOT_REMOVE_COMMENT:examples (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ### Calculator |
| |
| The [calculator][example_calculator] example shows fundamental building blocks |
| for creating your first FIDL protocol. |
| |
| ### Key-value store |
| |
| The [key-value store][example_key_value_store] example demonstrates how to build |
| a simple key-value store using FIDL in order to learn about the various data |
| types available in the language. |
| |
| ### Canvas |
| |
| The [canvas][example_canvas] example demonstrates how to build a simple 2D |
| line-rendering canvas using FIDL in order to learn about commonly used data flow |
| patterns. |
| |
| <!-- /DO_NOT_REMOVE_COMMENT:examples (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ## Concept index |
| |
| Each "concept" in the FIDL language is exemplified in at least one of the |
| examples listed in the preceding section. A quick reference of each such |
| concept, as well as its example implementations, is listed in the following |
| section. |
| |
| <!-- DO_NOT_REMOVE_COMMENT:concepts (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ### Acknowledgement pattern |
| |
| <<../widgets/_acknowledgement_pattern.md>> |
| |
| ### Alias |
| |
| <<../widgets/_alias.md>> |
| |
| ### Anonymous type |
| |
| <<../widgets/_anonymous_type.md>> |
| |
| ### Bits |
| |
| <<../widgets/_bits.md>> |
| |
| ### Discoverable |
| |
| <<../widgets/_discoverable.md>> |
| |
| ### Enum |
| |
| <<../widgets/_enum.md>> |
| |
| ### Feed forward pattern |
| |
| <<../widgets/_feed_forward_pattern.md>> |
| |
| ### Generated name |
| |
| <<../widgets/_generated_name.md>> |
| |
| ### Handle rights |
| |
| <<../widgets/_handle_rights.md>> |
| |
| ### Infallible two way method |
| |
| <<../widgets/_infallible_two_way_method.md>> |
| |
| ### Named payload |
| |
| <<../widgets/_named_payload.md>> |
| |
| ### Optionality |
| |
| <<../widgets/_optionality.md>> |
| |
| ### Pagination pattern |
| |
| <<../widgets/_pagination_pattern.md>> |
| |
| ### Persistence |
| |
| <<../widgets/_persistence.md>> |
| |
| ### Protocol end |
| |
| <<../widgets/_protocol_end.md>> |
| |
| ### Protocol |
| |
| <<../widgets/_protocol.md>> |
| |
| ### Recursive type |
| |
| <<../widgets/_recursive_type.md>> |
| |
| ### Resource type |
| |
| <<../widgets/_resource_type.md>> |
| |
| ### Scalar type |
| |
| <<../widgets/_scalar_type.md>> |
| |
| ### Size constraint |
| |
| <<../widgets/_size_constraint.md>> |
| |
| ### Struct payload |
| |
| <<../widgets/_struct_payload.md>> |
| |
| ### Table payload |
| |
| <<../widgets/_table_payload.md>> |
| |
| ### Throttled event pattern |
| |
| <<../widgets/_throttled_event_pattern.md>> |
| |
| ### Union payload |
| |
| <<../widgets/_union_payload.md>> |
| |
| <!-- /DO_NOT_REMOVE_COMMENT:concepts (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| [example_calculator]: calculator/README.md |
| [example_canvas]: canvas/README.md |
| [example_key_value_store]: key_value_store/README.md |