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

import 'dart:async';

import 'package:fidl/fidl.dart';
import 'package:fidl_fuchsia_sys/fidl_async.dart' as fidl_sys;

/// Connects to the specified service using the given [serviceProvider].
///
/// It is recommended to not use this method directly but rather to use the
/// connectToEnvironmentService method or a higher level method instead.
Future<void> connectToService<T>(
  fidl_sys.ServiceProvider serviceProvider,
  String serviceName,
  String interfaceName,
  InterfaceRequest<T> interfaceRequest,
) async {
  if (serviceName == null) {
    throw Exception("$interfaceName's "
        'proxyServiceController.\$serviceName must not be null. Check the FIDL '
        'file for a missing [Discoverable]');
  }

  return serviceProvider.connectToService(
      serviceName, interfaceRequest.passChannel());
}
