Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Side by Side Diff: examples/go/echo_client.go

Issue 1008543002: go: echo app (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package main
6
7 import (
8 "fmt"
9 "log"
10
11 "code.google.com/p/go.mobile/app"
12
13 "mojo/public/go/bindings"
14 "mojo/public/go/system"
15
16 "examples/echo/echo"
17 "mojo/public/interfaces/application/application"
18 "mojo/public/interfaces/application/service_provider"
19 "mojo/public/interfaces/application/shell"
20 )
21
22 //#include "mojo/public/c/system/types.h"
23 import "C"
24
25 // AppImpl implements mojo interface application.
26 type AppImpl struct {
27 shell *shell.ShellProxy
28 serviceProvider *service_provider.ServiceProviderProxy
29 echo *echo.EchoProxy
30 }
31
32 func (impl *AppImpl) Initialize(inShell shell.ShellPointer, inArgs *[]string, in Url string) error {
33 impl.shell = shell.NewShellProxy(inShell, bindings.GetAsyncWaiter())
34 // Connect to another mojo application.
35 request, pointer := service_provider.CreateMessagePipeForServiceProvider ()
36 if err := impl.shell.ConnectToApplication("mojo:echo_server", &request, nil); err != nil {
37 return err
38 }
39 impl.serviceProvider = service_provider.NewServiceProviderProxy(pointer, bindings.GetAsyncWaiter())
40 // Connect to service.
41 echoRequest, echoPointer := echo.CreateMessagePipeForEcho()
42 if err := impl.serviceProvider.ConnectToService("mojo::examples::Echo", echoRequest.PassMessagePipe()); err != nil {
43 return err
44 }
45 impl.echo = echo.NewEchoProxy(echoPointer, bindings.GetAsyncWaiter())
46 // Send and receive echo request.
47 response, err := impl.echo.EchoString(bindings.StringPointer("Hello Go w orld!"))
48 if response != nil {
49 fmt.Println(*response)
jamesr 2015/03/12 22:26:06 question: why does this fmt.Println()...
50 } else {
51 return fmt.Errorf("nil echo response")
52 }
53 return err
54 }
55
56 func (impl *AppImpl) AcceptConnection(inRequestorUrl string, inServices *service _provider.ServiceProviderRequest, inExposedServices *service_provider.ServicePro viderPointer, inResolvedUrl string) error {
57 if inServices != nil {
58 inServices.Close()
59 }
60 if inExposedServices != nil {
61 inExposedServices.Close()
62 }
63 return nil
64 }
65
66 func (impl *AppImpl) RequestQuit() error {
67 impl.echo.Close_proxy()
68 impl.serviceProvider.Close_proxy()
69 impl.shell.Close_proxy()
70 return fmt.Errorf("closed")
71 }
72
73 //export MojoMain
74 func MojoMain(handle C.MojoHandle) C.MojoResult {
75 appHandle := system.GetCore().AcquireNativeHandle(system.MojoHandle(hand le)).ToMessagePipeHandle()
76 appRequest := application.ApplicationRequest{bindings.NewMessagePipeHand leOwner(appHandle)}
77 stub := application.NewApplicationStub(appRequest, &AppImpl{}, bindings. GetAsyncWaiter())
78 for {
79 if err := stub.ServeRequest(); err != nil {
80 log.Println(err)
81 stub.Close()
82 break
83 }
84 }
85 return C.MOJO_RESULT_OK
86 }
87
88 func main() {
89 app.Run(app.Callbacks{})
90 }
OLDNEW
« no previous file with comments | « examples/go/README.txt ('k') | examples/go/echo_server.go » ('j') | examples/go/echo_server.go » ('J')

Powered by Google App Engine
This is Rietveld 408576698