Merge "ref: Update and enhance several comments related to the new server API."
diff --git a/runtime/internal/discovery/advertise.go b/lib/discovery/advertise.go
similarity index 100%
rename from runtime/internal/discovery/advertise.go
rename to lib/discovery/advertise.go
diff --git a/runtime/internal/discovery/discovery.go b/lib/discovery/discovery.go
similarity index 100%
rename from runtime/internal/discovery/discovery.go
rename to lib/discovery/discovery.go
diff --git a/runtime/internal/discovery/discovery_test.go b/lib/discovery/discovery_test.go
similarity index 91%
rename from runtime/internal/discovery/discovery_test.go
rename to lib/discovery/discovery_test.go
index 1032778..89ac563 100644
--- a/runtime/internal/discovery/discovery_test.go
+++ b/lib/discovery/discovery_test.go
@@ -14,20 +14,20 @@
 	"v.io/v23/context"
 	"v.io/v23/discovery"
 
-	idiscovery "v.io/x/ref/runtime/internal/discovery"
-	"v.io/x/ref/runtime/internal/discovery/plugins/mock"
+	ldiscovery "v.io/x/ref/lib/discovery"
+	"v.io/x/ref/lib/discovery/plugins/mock"
 )
 
 func TestBasic(t *testing.T) {
-	ds := idiscovery.New([]idiscovery.Plugin{mock.New()})
+	ds := ldiscovery.New([]ldiscovery.Plugin{mock.New()})
 	services := []discovery.Service{
 		{
-			InstanceUuid:  idiscovery.NewInstanceUUID(),
+			InstanceUuid:  ldiscovery.NewInstanceUUID(),
 			InterfaceName: "v.io/v23/a",
 			Addrs:         []string{"/h1:123/x", "/h2:123/y"},
 		},
 		{
-			InstanceUuid:  idiscovery.NewInstanceUUID(),
+			InstanceUuid:  ldiscovery.NewInstanceUUID(),
 			InterfaceName: "v.io/v23/b",
 			Addrs:         []string{"/h1:123/x", "/h2:123/z"},
 		},
diff --git a/runtime/internal/discovery/plugin.go b/lib/discovery/plugin.go
similarity index 100%
rename from runtime/internal/discovery/plugin.go
rename to lib/discovery/plugin.go
diff --git a/runtime/internal/discovery/plugins/mdns/mdns.go b/lib/discovery/plugins/mdns/mdns.go
similarity index 92%
rename from runtime/internal/discovery/plugins/mdns/mdns.go
rename to lib/discovery/plugins/mdns/mdns.go
index 5e59790..4b489ab 100644
--- a/runtime/internal/discovery/plugins/mdns/mdns.go
+++ b/lib/discovery/plugins/mdns/mdns.go
@@ -31,7 +31,7 @@
 	"v.io/v23/context"
 	"v.io/v23/discovery"
 
-	idiscovery "v.io/x/ref/runtime/internal/discovery"
+	ldiscovery "v.io/x/ref/lib/discovery"
 
 	"github.com/pborman/uuid"
 	mdns "github.com/presotto/go-mdns-sd"
@@ -52,7 +52,7 @@
 
 type plugin struct {
 	mdns      *mdns.MDNS
-	adStopper *idiscovery.Trigger
+	adStopper *ldiscovery.Trigger
 
 	subscriptionRefreshTime time.Duration
 	subscriptionWaitTime    time.Duration
@@ -65,7 +65,7 @@
 	lastSubscription time.Time
 }
 
-func (p *plugin) Advertise(ctx *context.T, ad *idiscovery.Advertisement) error {
+func (p *plugin) Advertise(ctx *context.T, ad *ldiscovery.Advertisement) error {
 	serviceName := ad.ServiceUuid.String() + serviceNameSuffix
 	hostName := fmt.Sprintf("%x.%s%s", ad.InstanceUuid, ad.ServiceUuid.String(), hostNameSuffix)
 	txt, err := createTXTRecords(ad)
@@ -92,7 +92,7 @@
 	return nil
 }
 
-func (p *plugin) Scan(ctx *context.T, serviceUuid uuid.UUID, scanCh chan<- *idiscovery.Advertisement) error {
+func (p *plugin) Scan(ctx *context.T, serviceUuid uuid.UUID, scanCh chan<- *ldiscovery.Advertisement) error {
 	var serviceName string
 	if len(serviceUuid) == 0 {
 		serviceName = v23ServiceName
@@ -145,7 +145,7 @@
 	return nil
 }
 
-func createTXTRecords(ad *idiscovery.Advertisement) ([]string, error) {
+func createTXTRecords(ad *ldiscovery.Advertisement) ([]string, error) {
 	// Prepare a TXT record with attributes and addresses to announce.
 	//
 	// TODO(jhahn): Currently, the record size is limited to 2000 bytes in
@@ -162,7 +162,7 @@
 	return txt, nil
 }
 
-func decodeAdvertisement(service mdns.ServiceInstance) (*idiscovery.Advertisement, error) {
+func decodeAdvertisement(service mdns.ServiceInstance) (*ldiscovery.Advertisement, error) {
 	// Note that service.Name would be '<instance uuid>.<service uuid>._v23._tcp.local.' for
 	// subtype service discovery and ''<instance uuid>.<service uuid>' for v23 service discovery.
 	p := strings.SplitN(service.Name, ".", 3)
@@ -178,7 +178,7 @@
 		return nil, fmt.Errorf("invalid service uuid in host name: %s", p[1])
 	}
 
-	ad := idiscovery.Advertisement{
+	ad := ldiscovery.Advertisement{
 		ServiceUuid: serviceUuid,
 		Service: discovery.Service{
 			InstanceUuid: instanceUuid,
@@ -204,11 +204,11 @@
 	return &ad, nil
 }
 
-func New(host string) (idiscovery.Plugin, error) {
+func New(host string) (ldiscovery.Plugin, error) {
 	return newWithLoopback(host, false)
 }
 
-func newWithLoopback(host string, loopback bool) (idiscovery.Plugin, error) {
+func newWithLoopback(host string, loopback bool) (ldiscovery.Plugin, error) {
 	if len(host) == 0 {
 		// go-mdns-sd reannounce the services periodically only when the host name
 		// is set. Use a default one if not given.
@@ -227,7 +227,7 @@
 	}
 	p := plugin{
 		mdns:      m,
-		adStopper: idiscovery.NewTrigger(),
+		adStopper: ldiscovery.NewTrigger(),
 		// TODO(jhahn): Figure out a good subscription refresh time.
 		subscriptionRefreshTime: 10 * time.Second,
 		subscription:            make(map[string]subscription),
diff --git a/runtime/internal/discovery/plugins/mdns/mdns_test.go b/lib/discovery/plugins/mdns/mdns_test.go
similarity index 79%
rename from runtime/internal/discovery/plugins/mdns/mdns_test.go
rename to lib/discovery/plugins/mdns/mdns_test.go
index 77a7bd4..0356d7f 100644
--- a/runtime/internal/discovery/plugins/mdns/mdns_test.go
+++ b/lib/discovery/plugins/mdns/mdns_test.go
@@ -16,13 +16,13 @@
 	"v.io/v23/context"
 	"v.io/v23/discovery"
 
-	idiscovery "v.io/x/ref/runtime/internal/discovery"
+	ldiscovery "v.io/x/ref/lib/discovery"
 )
 
 func TestBasic(t *testing.T) {
 	services := []discovery.Service{
 		{
-			InstanceUuid:  idiscovery.NewInstanceUUID(),
+			InstanceUuid:  ldiscovery.NewInstanceUUID(),
 			InterfaceName: "v.io/x",
 			Attrs: discovery.Attributes{
 				"a": "a1234",
@@ -33,7 +33,7 @@
 			},
 		},
 		{
-			InstanceUuid:  idiscovery.NewInstanceUUID(),
+			InstanceUuid:  ldiscovery.NewInstanceUUID(),
 			InterfaceName: "v.io/x",
 			Attrs: discovery.Attributes{
 				"a": "a5678",
@@ -44,7 +44,7 @@
 			},
 		},
 		{
-			InstanceUuid:  idiscovery.NewInstanceUUID(),
+			InstanceUuid:  ldiscovery.NewInstanceUUID(),
 			InterfaceName: "v.io/y",
 			Attrs: discovery.Attributes{
 				"c": "c1234",
@@ -102,10 +102,10 @@
 	}
 }
 
-func advertise(p idiscovery.Plugin, service discovery.Service) (func(), error) {
+func advertise(p ldiscovery.Plugin, service discovery.Service) (func(), error) {
 	ctx, cancel := context.RootContext()
-	ad := idiscovery.Advertisement{
-		ServiceUuid: idiscovery.NewServiceUUID(service.InterfaceName),
+	ad := ldiscovery.Advertisement{
+		ServiceUuid: ldiscovery.NewServiceUUID(service.InterfaceName),
 		Service:     service,
 	}
 	if err := p.Advertise(ctx, &ad); err != nil {
@@ -114,17 +114,17 @@
 	return cancel, nil
 }
 
-func scan(p idiscovery.Plugin, interfaceName string) ([]idiscovery.Advertisement, error) {
+func scan(p ldiscovery.Plugin, interfaceName string) ([]ldiscovery.Advertisement, error) {
 	ctx, _ := context.RootContext()
-	scanCh := make(chan *idiscovery.Advertisement)
+	scanCh := make(chan *ldiscovery.Advertisement)
 	var serviceUuid uuid.UUID
 	if len(interfaceName) > 0 {
-		serviceUuid = idiscovery.NewServiceUUID(interfaceName)
+		serviceUuid = ldiscovery.NewServiceUUID(interfaceName)
 	}
 	if err := p.Scan(ctx, serviceUuid, scanCh); err != nil {
 		return nil, fmt.Errorf("Scan failed: %v", err)
 	}
-	var ads []idiscovery.Advertisement
+	var ads []ldiscovery.Advertisement
 	for {
 		select {
 		case ad := <-scanCh:
@@ -135,11 +135,11 @@
 	}
 }
 
-func match(ads []idiscovery.Advertisement, wants ...discovery.Service) bool {
+func match(ads []ldiscovery.Advertisement, wants ...discovery.Service) bool {
 	for _, want := range wants {
 		matched := false
 		for i, ad := range ads {
-			if !uuid.Equal(ad.ServiceUuid, idiscovery.NewServiceUUID(want.InterfaceName)) {
+			if !uuid.Equal(ad.ServiceUuid, ldiscovery.NewServiceUUID(want.InterfaceName)) {
 				continue
 			}
 			matched = reflect.DeepEqual(ad.Service, want)
@@ -155,10 +155,10 @@
 	return len(ads) == 0
 }
 
-func scanAndMatch(p idiscovery.Plugin, interfaceName string, wants ...discovery.Service) error {
+func scanAndMatch(p ldiscovery.Plugin, interfaceName string, wants ...discovery.Service) error {
 	const timeout = 1 * time.Second
 
-	var ads []idiscovery.Advertisement
+	var ads []ldiscovery.Advertisement
 	for now := time.Now(); time.Since(now) < timeout; {
 		runtime.Gosched()
 
diff --git a/runtime/internal/discovery/plugins/mock/mock.go b/lib/discovery/plugins/mock/mock.go
similarity index 96%
rename from runtime/internal/discovery/plugins/mock/mock.go
rename to lib/discovery/plugins/mock/mock.go
index 30423da..cf202cb 100644
--- a/runtime/internal/discovery/plugins/mock/mock.go
+++ b/lib/discovery/plugins/mock/mock.go
@@ -11,7 +11,7 @@
 
 	"v.io/v23/context"
 
-	"v.io/x/ref/runtime/internal/discovery"
+	"v.io/x/ref/lib/discovery"
 )
 
 type plugin struct {
diff --git a/runtime/internal/discovery/scan.go b/lib/discovery/scan.go
similarity index 100%
rename from runtime/internal/discovery/scan.go
rename to lib/discovery/scan.go
diff --git a/runtime/internal/discovery/trigger.go b/lib/discovery/trigger.go
similarity index 100%
rename from runtime/internal/discovery/trigger.go
rename to lib/discovery/trigger.go
diff --git a/runtime/internal/discovery/trigger_test.go b/lib/discovery/trigger_test.go
similarity index 100%
rename from runtime/internal/discovery/trigger_test.go
rename to lib/discovery/trigger_test.go
diff --git a/runtime/internal/discovery/uuid.go b/lib/discovery/uuid.go
similarity index 100%
rename from runtime/internal/discovery/uuid.go
rename to lib/discovery/uuid.go
diff --git a/runtime/internal/discovery/uuid_test.go b/lib/discovery/uuid_test.go
similarity index 95%
rename from runtime/internal/discovery/uuid_test.go
rename to lib/discovery/uuid_test.go
index 114c8e4..447de1d 100644
--- a/runtime/internal/discovery/uuid_test.go
+++ b/lib/discovery/uuid_test.go
@@ -7,7 +7,7 @@
 import (
 	"testing"
 
-	"v.io/x/ref/runtime/internal/discovery"
+	"v.io/x/ref/lib/discovery"
 )
 
 func TestServiceUUID(t *testing.T) {