OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 {% import "struct.tmpl" as struct_macros %} | 5 {% import "struct.tmpl" as struct_macros %} |
| 6 {% import "mojom_type_macros.tmpl" as mojom_type_macros %} |
6 | 7 |
7 {%- macro declare_params(struct) %} | 8 {%- macro declare_params(struct) %} |
8 {%- for field in struct.fields -%} | 9 {%- for field in struct.fields -%} |
9 {{field|name(False)}} {{field.kind|go_type}}{% if not loop.last %}, {% e
ndif %} | 10 {{field|name(False)}} {{field.kind|go_type}}{% if not loop.last %}, {% e
ndif %} |
10 {%- endfor %} | 11 {%- endfor %} |
11 {%- endmacro %} | 12 {%- endmacro %} |
12 | 13 |
13 | 14 |
14 | 15 |
15 {% macro declare_request_params(method) %} | 16 {% macro declare_request_params(method) %} |
(...skipping 12 matching lines...) Expand all Loading... |
28 bindings.MessageNoFlag | 29 bindings.MessageNoFlag |
29 {%- elif is_response: -%} | 30 {%- elif is_response: -%} |
30 bindings.MessageIsResponseFlag | 31 bindings.MessageIsResponseFlag |
31 {%- else -%} | 32 {%- else -%} |
32 bindings.MessageExpectsResponseFlag | 33 bindings.MessageExpectsResponseFlag |
33 {%- endif -%} | 34 {%- endif -%} |
34 {%- endmacro -%} | 35 {%- endmacro -%} |
35 | 36 |
36 | 37 |
37 | 38 |
38 {% macro define(interface) %} | 39 {% macro define(interface, descpkg, typepkg, pkg) %} |
39 type {{interface|name}} interface { | 40 type {{interface|name}} interface { |
40 {% for method in interface.methods %} | 41 {% for method in interface.methods %} |
41 {{method|name}}{{declare_request_params(method)}} | 42 {{method|name}}{{declare_request_params(method)}} |
42 {% endfor %} | 43 {% endfor %} |
43 } | 44 } |
44 | 45 |
45 var {{interface|name(False)}}_Name = "{{interface.module.namespace|replace(".","
::")}}::{{interface.name}}" | 46 var {{interface|name(False)}}_Name = "{{interface.module.namespace|replace(".","
::")}}::{{interface.name}}" |
46 | 47 |
47 type {{interface|name}}_Request bindings.InterfaceRequest | 48 type {{interface|name}}_Request bindings.InterfaceRequest |
48 | 49 |
(...skipping 12 matching lines...) Expand all Loading... |
61 } | 62 } |
62 | 63 |
63 type {{interface|name}}_Factory interface { | 64 type {{interface|name}}_Factory interface { |
64 Create(request {{interface|name}}_Request) | 65 Create(request {{interface|name}}_Request) |
65 } | 66 } |
66 | 67 |
67 func (f *{{interface|name}}_ServiceFactory) Name() string { | 68 func (f *{{interface|name}}_ServiceFactory) Name() string { |
68 return {{interface|name(False)}}_Name | 69 return {{interface|name(False)}}_Name |
69 } | 70 } |
70 | 71 |
| 72 func (f *{{interface|name}}_ServiceFactory) ServiceDescription() {{descpkg}}Serv
iceDescription { |
| 73 return &{{interface|name}}_ServiceDescription{} |
| 74 } |
| 75 |
71 func (f *{{interface|name}}_ServiceFactory) Create(messagePipe system.MessagePip
eHandle) { | 76 func (f *{{interface|name}}_ServiceFactory) Create(messagePipe system.MessagePip
eHandle) { |
72 request := {{interface|name}}_Request{bindings.NewMessagePipeHandleOwner
(messagePipe)} | 77 request := {{interface|name}}_Request{bindings.NewMessagePipeHandleOwner
(messagePipe)} |
73 f.Delegate.Create(request) | 78 f.Delegate.Create(request) |
74 } | 79 } |
75 | 80 |
76 // CreateMessagePipeFor{{interface|name}} creates a message pipe for use with th
e | 81 // CreateMessagePipeFor{{interface|name}} creates a message pipe for use with th
e |
77 // {{interface|name}} interface with a {{interface|name}}_Request on one end and
a {{interface|name}}_Pointer on the other. | 82 // {{interface|name}} interface with a {{interface|name}}_Request on one end and
a {{interface|name}}_Pointer on the other. |
78 func CreateMessagePipeFor{{interface|name}}() ({{interface|name}}_Request, {{int
erface|name}}_Pointer) { | 83 func CreateMessagePipeFor{{interface|name}}() ({{interface|name}}_Request, {{int
erface|name}}_Pointer) { |
79 r, p := bindings.CreateMessagePipeForMojoInterface() | 84 r, p := bindings.CreateMessagePipeForMojoInterface() |
80 return {{interface|name}}_Request(r), {{interface|name}}_Pointer(p) | 85 return {{interface|name}}_Request(r), {{interface|name}}_Pointer(p) |
(...skipping 13 matching lines...) Expand all Loading... |
94 bindings.NewRouter(p.PassMessagePipe(), waiter), | 99 bindings.NewRouter(p.PassMessagePipe(), waiter), |
95 bindings.NewCounter(), | 100 bindings.NewCounter(), |
96 } | 101 } |
97 } | 102 } |
98 | 103 |
99 func (p *{{interface|name}}_Proxy) Close_Proxy() { | 104 func (p *{{interface|name}}_Proxy) Close_Proxy() { |
100 p.router.Close() | 105 p.router.Close() |
101 } | 106 } |
102 | 107 |
103 {% for method in interface.methods %} | 108 {% for method in interface.methods %} |
104 {{struct_macros.define(method.param_struct, False)}} | 109 {{struct_macros.define(method.param_struct, typepkg, pkg, False)}} |
105 {%- if method|has_response %} | 110 {%- if method|has_response %} |
106 {{struct_macros.define(method.response_param_struct, False)}} | 111 {{struct_macros.define(method.response_param_struct, typepkg, pkg, False)}} |
107 {%- endif %} | 112 {%- endif %} |
108 func (p *{{interface|name}}_Proxy) {{method|name}}{{declare_request_params(metho
d)}} { | 113 func (p *{{interface|name}}_Proxy) {{method|name}}{{declare_request_params(metho
d)}} { |
109 payload := &{{method.param_struct|name(False)}}{ | 114 payload := &{{method.param_struct|name(False)}}{ |
110 {% for field in (method.param_struct).fields %} | 115 {% for field in (method.param_struct).fields %} |
111 {{field|name(False)}}, | 116 {{field|name(False)}}, |
112 {% endfor %} | 117 {% endfor %} |
113 } | 118 } |
114 header := bindings.MessageHeader{ | 119 header := bindings.MessageHeader{ |
115 Type: {{interface|name(False)}}_{{method|name}}_Name, | 120 Type: {{interface|name(False)}}_{{method|name}}_Name, |
116 Flags: {{flags(method, False)}}, | 121 Flags: {{flags(method, False)}}, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 type {{interface|name(False)}}_Stub struct { | 168 type {{interface|name(False)}}_Stub struct { |
164 connector *bindings.Connector | 169 connector *bindings.Connector |
165 impl {{interface|name}} | 170 impl {{interface|name}} |
166 } | 171 } |
167 | 172 |
168 func New{{interface|name}}Stub(r {{interface|name}}_Request, impl {{interface|na
me}}, waiter bindings.AsyncWaiter) *bindings.Stub { | 173 func New{{interface|name}}Stub(r {{interface|name}}_Request, impl {{interface|na
me}}, waiter bindings.AsyncWaiter) *bindings.Stub { |
169 connector := bindings.NewConnector(r.PassMessagePipe(), waiter) | 174 connector := bindings.NewConnector(r.PassMessagePipe(), waiter) |
170 return bindings.NewStub(connector, &{{interface|name(False)}}_Stub{conne
ctor, impl}) | 175 return bindings.NewStub(connector, &{{interface|name(False)}}_Stub{conne
ctor, impl}) |
171 } | 176 } |
172 | 177 |
| 178 {{ mojom_type_macros.writeMojomTypeDef(typepkg, interface, pkg, exported) }} |
| 179 |
| 180 func (f *{{interface|name}}_Request) ServiceDescription() {{descpkg}}ServiceDesc
ription { |
| 181 return &{{interface|name}}_ServiceDescription{} |
| 182 } |
| 183 |
| 184 |
| 185 type {{interface|name}}_ServiceDescription struct{} |
| 186 |
| 187 func (sd *{{interface|name}}_ServiceDescription) GetTopLevelInterface() (outMojo
mInterface {{typepkg}}MojomInterface, err error) { |
| 188 return {{interface|mojom_type_identifier}}(), nil |
| 189 } |
| 190 |
| 191 func (sd *{{interface|name}}_ServiceDescription) GetTypeDefinition(inTypeKey str
ing) (outType mojom_types.UserDefinedType, err error) { |
| 192 if udt, ok := Descriptor()[inTypeKey]; ok { |
| 193 return udt, nil |
| 194 } |
| 195 return nil, fmt.Errorf("%s_ServiceDescription does not recognize %s", "{
{interface|name}}", inTypeKey) |
| 196 } |
| 197 |
| 198 func (sd *{{interface|name}}_ServiceDescription) GetAllTypeDefinitions() (outDef
initions *map[string]mojom_types.UserDefinedType, err error) { |
| 199 o := Descriptor() |
| 200 return &o, nil |
| 201 } |
| 202 |
| 203 var _ {{descpkg}}ServiceDescription = (*{{interface|name}}_ServiceDescription)(n
il) |
| 204 |
| 205 |
173 func (s *{{interface|name(False)}}_Stub) Accept(message *bindings.Message) (err
error) { | 206 func (s *{{interface|name(False)}}_Stub) Accept(message *bindings.Message) (err
error) { |
174 switch message.Header.Type { | 207 switch message.Header.Type { |
175 {% for method in interface.methods %} | 208 {% for method in interface.methods %} |
176 case {{interface|name(False)}}_{{method|name}}_Name: | 209 case {{interface|name(False)}}_{{method|name}}_Name: |
177 {% if method|has_response %} | 210 {% if method|has_response %} |
178 if message.Header.Flags != bindings.MessageExpectsResponseFlag { | 211 if message.Header.Flags != bindings.MessageExpectsResponseFlag { |
179 {% else %} | 212 {% else %} |
180 if message.Header.Flags != bindings.MessageNoFlag { | 213 if message.Header.Flags != bindings.MessageNoFlag { |
181 {% endif %} | 214 {% endif %} |
182 return &bindings.ValidationError{bindings.MessageHeaderI
nvalidFlags, | 215 return &bindings.ValidationError{bindings.MessageHeaderI
nvalidFlags, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 default: | 253 default: |
221 return &bindings.ValidationError{ | 254 return &bindings.ValidationError{ |
222 bindings.MessageHeaderUnknownMethod, | 255 bindings.MessageHeaderUnknownMethod, |
223 fmt.Sprintf("unknown method %v", message.Header.Type), | 256 fmt.Sprintf("unknown method %v", message.Header.Type), |
224 } | 257 } |
225 } | 258 } |
226 return | 259 return |
227 } | 260 } |
228 | 261 |
229 {% endmacro %} | 262 {% endmacro %} |
OLD | NEW |