// 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.
// TODO(fxbug.dev/31262): Point to the FIDL interface for file I/O once RIO is migrated.
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`.
    ConnectToService(resource struct {
        service_name string;
        channel zx.handle:CHANNEL;
    });
};
