func (d *HttpHandlerDelegate) Initialize(ctx application.Context) { request, pointer := http_server_factory.CreateMessagePipeForHttpServerFactory() ctx.ConnectToApplication("mojo:http_server").ConnectToService(&request) factory := http_server_factory.NewHttpServerFactoryProxy(pointer, bindings.GetAsyncWaiter()) addr := &net_address.NetAddress{ net_address.NetAddressFamily_IpV4, &net_address.NetAddressIPv4{ 8080, [4]uint8{127, 0, 0, 1}, }, nil, } serverRequest, serverPointer := http_server.CreateMessagePipeForHttpServer() factory.CreateHttpServer(serverRequest, addr) d.server = http_server.NewHttpServerProxy(serverPointer, bindings.GetAsyncWaiter()) handlerRequest, handlerPointer := http_server.CreateMessagePipeForHttpHandler() ok, err := d.server.SetHandler("/go", handlerPointer) if !ok { log.Println("can't set handler:", err) return } d.handlerStub = http_server.NewHttpHandlerStub(handlerRequest, &HttpHandler{}, bindings.GetAsyncWaiter()) go func() { for { if err := d.handlerStub.ServeRequest(); err != nil { log.Println("can't handle http request:", err) return } } }() factory.Close_Proxy() }
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 (delegate *EchoClientDelegate) Initialize(ctx application.Context) { echoRequest, echoPointer := echo.CreateMessagePipeForEcho() ctx.ConnectToApplication("mojo:go_echo_server").ConnectToService(&echoRequest) echoProxy := echo.NewEchoProxy(echoPointer, bindings.GetAsyncWaiter()) response, err := echoProxy.EchoString(bindings.StringPointer("Hello, Go world!")) if response != nil { fmt.Printf("client: %s\n", *response) } else { log.Println(err) } echoProxy.Close_Proxy() ctx.Close() }
func ConnectToRemoteService(ctx application.Context, r application.ServiceRequest, v23Name string) { v23r, v23p := v23clientproxy.CreateMessagePipeForV23ClientProxy() ctx.ConnectToApplication("https://mojo.v.io/v23clientproxy.mojo").ConnectToService(&v23r) prox := v23clientproxy.NewV23ClientProxyProxy(v23p, bindings.GetAsyncWaiter()) sd := r.ServiceDescription() mojomInterfaceType, err := sd.GetTopLevelInterface() if err != nil { // The service description must have the MojomInterface type. panic(err) } desc, err := sd.GetAllTypeDefinitions() if err != nil { // The service description must have the map of UserDefinedTypes. panic(err) } prox.SetupClientProxy(v23Name, mojomInterfaceType, *desc, r.Name(), r.PassMessagePipe()) }
// Initialize connects to other instance, providing and asking for echo service. func (delegate *EchoDelegate) Initialize(ctx application.Context) { if ctx.URL() != delegate.localURL { panic(fmt.Sprintf("invalid URL: want %v, got %v", delegate.localURL, ctx.URL())) } if len(ctx.Args()) != 1 || ctx.Args()[0] != delegate.localURL { panic(fmt.Sprintf("invalid args: want %v, got %v", []string{delegate.localURL}, ctx.Args())) } go func() { echoRequest, echoPointer := echo.CreateMessagePipeForEcho() conn := ctx.ConnectToApplication(pairedURL(delegate.localURL), &echo.Echo_ServiceFactory{delegate}) if conn.RequestorURL() != delegate.localURL { panic(fmt.Sprintf("invalid requestor URL: want %v, got %v", delegate.localURL, conn.RequestorURL())) } if conn.ConnectionURL() != pairedURL(delegate.localURL) { panic(fmt.Sprintf("invalid connection URL: want %v, got %v", pairedURL(delegate.localURL), conn.ConnectionURL())) } conn.ConnectToService(&echoRequest) checkEcho(echoPointer) }() }
func (d *HttpServerDelegate) Initialize(ctx application.Context) { request, pointer := network_service.CreateMessagePipeForNetworkService() ctx.ConnectToApplication("mojo:network_service").ConnectToService(&request) d.networkService = network_service.NewNetworkServiceProxy(pointer, bindings.GetAsyncWaiter()) if err := d.InitTCPBoundSocket(); err != nil { log.Printf("can't create TCP socket: %v\n", err) return } if err := d.InitServerSocket(); err != nil { log.Printf("can't create server socket: %v\n", err) return } http.HandleFunc("/go", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, Go http server!") }) l := &MojoListener{d.serverSocket} if err := http.Serve(l, nil); err != nil { log.Printf("can't serve request: %v\n", err) return } }
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() } }