本文整理汇总了Golang中mojo/public/go/application.Context.ConnectToApplication方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.ConnectToApplication方法的具体用法?Golang Context.ConnectToApplication怎么用?Golang Context.ConnectToApplication使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mojo/public/go/application.Context
的用法示例。
在下文中一共展示了Context.ConnectToApplication方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Initialize
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()
}
示例2: Initialize
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()
}
}
示例3: newGlobalDiscovery
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())
}
示例4: Initialize
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()
}
示例5: ConnectToRemoteService
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())
}
示例6: Initialize
// 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)
}()
}
示例7: Initialize
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
}
}
示例8: Initialize
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()
}
}