| // 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 |
| |
| import ( |
| "v.io/v23/context" |
| ) |
| |
| // Plugin is the basic interface for a plugin to discovery service. |
| // All implementation should be goroutine-safe. |
| type Plugin interface { |
| // Advertise advertises the advertisement. Advertising will continue until |
| // the context is canceled or exceeds its deadline. done should be called |
| // once when advertising is done or canceled. |
| Advertise(ctx *context.T, ad Advertisement, done func()) error |
| |
| // Scan scans services that match the service uuid and returns scanned |
| // advertisements to the channel. A zero-value service uuid means any service. |
| // Scanning will continue until the context is canceled or exceeds its |
| // deadline. done should be called once when scanning is done or canceled. |
| // |
| // TODO(jhahn): Pass a filter on service attributes. |
| Scan(ctx *context.T, serviceUuid Uuid, ch chan<- Advertisement, done func()) error |
| } |