blob: b915af89f7b118cf3489b77a7171f71d03f09670 [file] [log] [blame]
// Copyright 2015 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
// Service represents service information for service discovery.
type Service struct {
// The universal unique identifier of a service instance.
// If this is not specified, a random unique identifier will be assigned.
InstanceId string
// Optional name of the service instance.
InstanceName string
// The interface that the service implements.
// E.g., 'v.io/v23/services/vtrace.Store'.
InterfaceName string
// The service attributes.
// E.g., {'resolution': '1024x768'}.
Attrs Attributes
// The addresses (vanadium object names) that the service is served on.
// E.g., '/host:port/a/b/c', '/ns.dev.v.io:8101/blah/blah'.
Addrs []string
}
// Attributes represents service attributes as a key/value pair.
//
// The key must be US-ASCII printable characters, excluding the '=' character
// and should not start with '_' character.
type Attributes map[string]string
// Found represents a service that is discovered by scan.
type Found struct {
Service Service
// TODO(jhahn): Add proximity.
}
// Lost represents a service that is lost during scan.
type Lost struct {
InstanceId string
}
// Update represents a discovery update.
type Update union {
Found Found
Lost Lost
}