blob: f368e99abf19b284d868ea029853bfdd83e6f647 [file] [log] [blame]
// Copyright 2022 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.net.mdns;
using zx;
/// Discoverable protocol for resolving service instances.
@discoverable
closed protocol ServiceInstanceResolver {
/// Resolves a specific service instance by sending an SRV query and returns
/// the endpoints, target and text records.
///
/// + request `service` name of the type of service to be resolved. For example, cast uses
/// '_googlecast._tcp.'.
/// + request `instance` name of the instance to be resolved. This is often a descriptive name
/// such as `Office Printer` or a name containing a large random number.
/// + request `timeout` specifies how long the service should wait before giving up when
/// waiting for a response to a resolution query.
/// + request `options` options to be applied to the resolution.
///
/// A successful resolution will return target and at least one endpoint.
/// Unsuccessful resolution occurs when either the service instance doesn't respond or
/// there is no endpoint (IP & port).
strict ResolveServiceInstance(struct {
service service_name;
instance instance_name;
timeout zx.Duration;
options ServiceInstanceResolutionOptions;
}) -> (struct {
instance ServiceInstance;
});
};
/// Options for `ServiceInstanceResolver.ResolveServiceInstance`.
type ServiceInstanceResolutionOptions = table {
/// The media (wired, wireless, both) of the interfaces on which the service instance should be
/// resolved. The default is both wired and wireless media.
1: media Media;
/// The IP versions (V4, V6, both) with which the service instance should resolved. The default
/// value is both IPv4 and IPv6.
2: ip_versions IpVersions;
// Whether to exclude services published locally when resolving the instance. The default
// value is false.
@available(added=9)
3: exclude_local bool;
// Whether to exclude services published via local proxies when resolving the instance. The
// default value is false.
@available(added=9)
4: exclude_local_proxies bool;
};