blob: f43b0e0e61890e40dd8ad40ed425a9918f381ff6 [file] [log] [blame]
// Copyright 2021 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.developer.ffx;
/// Contains information about the socket bound during mDNS setup.
type MdnsBindEvent = table {
1: port uint16;
};
type MdnsEventType = strict union {
/// Sent to subscribers when a new target is found on the network. This
/// is only propagated when the target is either seen for the first time,
/// or if the target has previously expired.
1: target_found TargetInfo;
/// Sent to subscribers when a target has been discovered after having
/// alreaady been stored in the cache. This can often be treated the same
/// as `target_found`.
2: target_rediscovered TargetInfo;
/// Sent to subscribers when a target has expired (the target has not been
/// rediscovered after the TTL has been reached). The target can be
/// rediscovered later. If this happens a `target_found` event will be sent.
3: target_expired TargetInfo;
/// An event propagated when the multicast listener is bound. Primarily
/// for testing.
4: socket_bound MdnsBindEvent;
};
@discoverable
protocol Mdns {
/// Gets the next event from the protocol. There is only ever meant to be
/// one event ready at a time on the service side, so it is important that
/// the client call this frequently.
GetNextEvent() -> (struct {
event MdnsEventType:optional;
});
/// Gets full cache of targets. It is advised to call this before
/// `GetNextEvent()`.
GetTargets() -> (struct {
targets vector<TargetInfo>:512;
});
};