| // Copyright 2016 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package discovery |
| |
| import "v.io/v23/context" |
| |
| // Update is the interface for a discovery update. |
| type Update interface { |
| // IsLost returns true when this update corresponds to an advertisement |
| // that led to a previous update vanishing. |
| IsLost() bool |
| |
| // Id returns the universal unique identifier of the advertisement. |
| Id() AdId |
| |
| // InterfaceName returns the interface name that the service implements. |
| InterfaceName() string |
| |
| // Addresses returns the addresses (vanadium object names) that the service |
| // is served on. |
| Addresses() []string |
| |
| // Attribute returns the named attribute. An empty string is returned if |
| // not found. |
| Attribute(name string) string |
| |
| // Attachment returns the channel on which the named attachment can be read. |
| // Nil data is returned if not found. |
| // |
| // This may do RPC calls if the attachment is not fetched yet and fetching |
| // will fail if the context is canceled or exceeds its deadline. |
| // |
| // Attachments may not be available when this update is for lost advertisement. |
| Attachment(ctx *context.T, name string) <-chan DataOrError |
| |
| // Advertisement returns a copy of the advertisement that this update |
| // corresponds to. |
| // |
| // The returned advertisement may not include all attachments. |
| Advertisement() Advertisement |
| } |
| |
| // DataOrError contains either an attachment data or an error |
| // encountered fetching the attachment. |
| type DataOrError struct { |
| Data []byte |
| Error error |
| } |