// 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.

// NOTE: The comments that have [START/END ...] in them are used to identify
// code snippets that  appear in the documentation.  Please be aware that
// changes in these blocks will affect the documentation on fuchsia.dev.

library fidl.examples.echo;

// [START protocol]
[Discoverable]
protocol Echo {
    EchoString(string? value) -> (string? response);
};
// [END protocol]

/// A service with multiple Echo protocol implementations.
service EchoService {
    /// An implementation of `Echo` that prefixes its output with "foo: ".
    Echo foo;
    /// An implementation of `Echo` that prefixes its output with "bar: ".
    Echo bar;
};
