func (d *delegate) Initialize(ctx application.Context) { req, ptr := discovery.CreateMessagePipeForDiscovery() ctx.ConnectToApplication("https://mojo.v.io/discovery.mojo").ConnectToService(&req) ad := discovery.Advertisement{ InterfaceName: "v.io/discovery.T", Addresses: []string{"localhost:1000"}, Attributes: &map[string]string{"foo": "abc"}, Attachments: &map[string][]byte{"bar": []byte{1, 2, 3}}, } dProxy := discovery.NewDiscoveryProxy(ptr, bindings.GetAsyncWaiter()) id, closerPtr, e1, e2 := dProxy.Advertise(ad, nil) if e1 != nil || e2 != nil { log.Printf("Failed to advertise: %v, %v", e1, e2) return } log.Printf("Advertising %x...", *id) d.stop = func() { cProxy := discovery.NewCloserProxy(*closerPtr, bindings.GetAsyncWaiter()) cProxy.Close() cProxy.Close_Proxy() dProxy.Close_Proxy() } }
func newGlobalDiscovery(mctx application.Context, scanInterval time.Duration) *mojom.Discovery_Proxy { u, _ := url.Parse("https://mojo.v.io/discovery.mojo") q := u.Query() q.Set(QueryGlobal, "a/b/c") q.Set(QueryScanInterval, fmt.Sprintf("%.3fs", scanInterval.Seconds())) u.RawQuery = q.Encode() req, ptr := mojom.CreateMessagePipeForDiscovery() mctx.ConnectToApplication(u.String()).ConnectToService(&req) return mojom.NewDiscoveryProxy(ptr, bindings.GetAsyncWaiter()) }
func (d *delegate) Initialize(ctx application.Context) { req, ptr := discovery.CreateMessagePipeForDiscovery() ctx.ConnectToApplication("https://mojo.v.io/discovery.mojo").ConnectToService(&req) scanHandlerReq, scanHandlerPtr := discovery.CreateMessagePipeForScanHandler() scanHandlerStub := discovery.NewScanHandlerStub(scanHandlerReq, &scanHandler{}, bindings.GetAsyncWaiter()) dProxy := discovery.NewDiscoveryProxy(ptr, bindings.GetAsyncWaiter()) closerPtr, e1, e2 := dProxy.Scan(`v.InterfaceName="v.io/discovery.T"`, scanHandlerPtr) if e1 != nil || e2 != nil { log.Printf("Failed to scan: %v, %v", e1, e2) scanHandlerStub.Close() dProxy.Close_Proxy() return } go func() { for { if err := scanHandlerStub.ServeRequest(); err != nil { connErr, ok := err.(*bindings.ConnectionError) if !ok || !connErr.Closed() { log.Println(err) } break } } }() d.stop = func() { cProxy := discovery.NewCloserProxy(*closerPtr, bindings.GetAsyncWaiter()) cProxy.Close() cProxy.Close_Proxy() scanHandlerStub.Close() dProxy.Close_Proxy() } }