// Copyright 2014 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.
library fuchsia.sys;

using zx;

/// An interface through which a client may request services from a host.
/// Instances of this interface are created within the context of an
/// already-identified client and host pair, so there is no need to explicitly
/// identify the client or host in the methods below.
///
/// This interface is deprecated.  Services should be published as directory
/// entries instead, just like files.
closed protocol ServiceProvider {
    /// Asks the host to provide the service identified by `service_name` through
    /// the `channel` endpoint supplied by the caller. If the host is not willing
    /// or able to provide the requested service, it should close the `channel`.
    strict ConnectToService(resource struct {
        service_name string;
        channel zx.Handle:CHANNEL;
    });
};
