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_util_macros.tmpl" as util %} |
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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 bindings.NewRouter(p.PassMessagePipe(), waiter), | 95 bindings.NewRouter(p.PassMessagePipe(), waiter), |
95 bindings.NewCounter(), | 96 bindings.NewCounter(), |
96 } | 97 } |
97 } | 98 } |
98 | 99 |
99 func (p *{{interface|name}}_Proxy) Close_Proxy() { | 100 func (p *{{interface|name}}_Proxy) Close_Proxy() { |
100 p.router.Close() | 101 p.router.Close() |
101 } | 102 } |
102 | 103 |
103 {% for method in interface.methods %} | 104 {% for method in interface.methods %} |
104 {{struct_macros.define(method.param_struct, False)}} | 105 {{struct_macros.define(method.param_struct, typepkg, pkg, False)}} |
105 {%- if method|has_response %} | 106 {%- if method|has_response %} |
106 {{struct_macros.define(method.response_param_struct, False)}} | 107 {{struct_macros.define(method.response_param_struct, typepkg, pkg, False)}} |
107 {%- endif %} | 108 {%- endif %} |
108 func (p *{{interface|name}}_Proxy) {{method|name}}{{declare_request_params(metho
d)}} { | 109 func (p *{{interface|name}}_Proxy) {{method|name}}{{declare_request_params(metho
d)}} { |
109 payload := &{{method.param_struct|name(False)}}{ | 110 payload := &{{method.param_struct|name(False)}}{ |
110 {% for field in (method.param_struct).fields %} | 111 {% for field in (method.param_struct).fields %} |
111 {{field|name(False)}}, | 112 {{field|name(False)}}, |
112 {% endfor %} | 113 {% endfor %} |
113 } | 114 } |
114 header := bindings.MessageHeader{ | 115 header := bindings.MessageHeader{ |
115 Type: {{interface|name(False)}}_{{method|name}}_Name, | 116 Type: {{interface|name(False)}}_{{method|name}}_Name, |
116 Flags: {{flags(method, False)}}, | 117 Flags: {{flags(method, False)}}, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 type {{interface|name(False)}}_Stub struct { | 164 type {{interface|name(False)}}_Stub struct { |
164 connector *bindings.Connector | 165 connector *bindings.Connector |
165 impl {{interface|name}} | 166 impl {{interface|name}} |
166 } | 167 } |
167 | 168 |
168 func New{{interface|name}}Stub(r {{interface|name}}_Request, impl {{interface|na
me}}, waiter bindings.AsyncWaiter) *bindings.Stub { | 169 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) | 170 connector := bindings.NewConnector(r.PassMessagePipe(), waiter) |
170 return bindings.NewStub(connector, &{{interface|name(False)}}_Stub{conne
ctor, impl}) | 171 return bindings.NewStub(connector, &{{interface|name(False)}}_Stub{conne
ctor, impl}) |
171 } | 172 } |
172 | 173 |
| 174 var ( |
| 175 interfaceName_{{interface|name}} = "{{interface|name}}" |
| 176 {% for method in interface.methods %} |
| 177 interfaceMethodName_{{interface|name}}_{{method|name}} = "{{method|name}
}" |
| 178 {% endfor %} |
| 179 ) |
| 180 |
| 181 func {{util.typeName(interface, typepkg, pkg)}}() {{typepkg}}MojomInterface { |
| 182 responseParamsMap := make(map[string]*{{typepkg}}MojomStruct) |
| 183 _ = responseParamsMap // To avoid the declared but unused compiler error |
| 184 {% for method in interface.methods %} |
| 185 {% if method|has_response %} |
| 186 mstruct_{{method|name}} := {{util.typeName(method.response_param_struct,
typepkg, pkg)}}() |
| 187 responseParamsMap[interfaceMethodName_{{interface|name}}_{{method|name}}
] = &mstruct_{{method|name}} |
| 188 {% endif %} |
| 189 {% endfor %} |
| 190 return {{typepkg}}MojomInterface{ |
| 191 DeclData: &{{typepkg}}DeclarationData{ |
| 192 ShortName: &interfaceName_{{interface|name}}, |
| 193 }, |
| 194 Methods: map[uint32]{{typepkg}}MojomMethod{ |
| 195 {%- for method in interface.methods -%} |
| 196 {{interface|name(False)}}_{{method|name}}_Name: {{typepk
g}}MojomMethod{ |
| 197 DeclData: &{{typepkg}}DeclarationData{ |
| 198 ShortName: &interfaceMethodName_{{interf
ace|name}}_{{method|name}}, |
| 199 }, |
| 200 Parameters: {{util.typeName(method.param_struct,
typepkg, pkg)}}(), |
| 201 ResponseParams: responseParamsMap[interfaceMetho
dName_{{interface|name}}_{{method|name}}], |
| 202 }, |
| 203 {%- endfor -%} |
| 204 }, |
| 205 } |
| 206 } |
| 207 func (r *{{interface|name}}_Request) Type() {{typepkg}}MojomInterface { |
| 208 return {{util.typeName(interface, typepkg, pkg)}}() |
| 209 } |
| 210 |
| 211 func (r *{{interface|name}}_Request) Desc() map[string]{{typepkg}}UserDefinedTyp
e { |
| 212 return Descriptor() |
| 213 } |
| 214 |
| 215 |
| 216 |
| 217 type {{interface|name}}_ServiceDescription struct{} |
| 218 |
| 219 func (sd *{{interface|name}}_ServiceDescription) GetTopLevelInterface() (outMojo
mInterface {{typepkg}}MojomInterface, err error) { |
| 220 return {{util.typeName(interface, typepkg, pkg)}}(), nil |
| 221 } |
| 222 |
| 223 func (sd *{{interface|name}}_ServiceDescription) GetTypeDefinition(inTypeKey str
ing) (outType mojom_types.UserDefinedType, err error) { |
| 224 if udt, ok := Descriptor()[inTypeKey]; ok { |
| 225 return udt, nil |
| 226 } |
| 227 return nil, fmt.Errorf("%s_ServiceDescription does not recognize %s", "{
{interface|name}}", inTypeKey) |
| 228 } |
| 229 |
| 230 func (sd *{{interface|name}}_ServiceDescription) GetAllTypeDefinitions() (outDef
initions *map[string]mojom_types.UserDefinedType, err error) { |
| 231 o := Descriptor() |
| 232 return &o, nil |
| 233 } |
| 234 |
| 235 var _ {{descpkg}}ServiceDescription = (*{{interface|name}}_ServiceDescription)(n
il) |
| 236 |
| 237 |
173 func (s *{{interface|name(False)}}_Stub) Accept(message *bindings.Message) (err
error) { | 238 func (s *{{interface|name(False)}}_Stub) Accept(message *bindings.Message) (err
error) { |
174 switch message.Header.Type { | 239 switch message.Header.Type { |
175 {% for method in interface.methods %} | 240 {% for method in interface.methods %} |
176 case {{interface|name(False)}}_{{method|name}}_Name: | 241 case {{interface|name(False)}}_{{method|name}}_Name: |
177 {% if method|has_response %} | 242 {% if method|has_response %} |
178 if message.Header.Flags != bindings.MessageExpectsResponseFlag { | 243 if message.Header.Flags != bindings.MessageExpectsResponseFlag { |
179 {% else %} | 244 {% else %} |
180 if message.Header.Flags != bindings.MessageNoFlag { | 245 if message.Header.Flags != bindings.MessageNoFlag { |
181 {% endif %} | 246 {% endif %} |
182 return &bindings.ValidationError{bindings.MessageHeaderI
nvalidFlags, | 247 return &bindings.ValidationError{bindings.MessageHeaderI
nvalidFlags, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 default: | 285 default: |
221 return &bindings.ValidationError{ | 286 return &bindings.ValidationError{ |
222 bindings.MessageHeaderUnknownMethod, | 287 bindings.MessageHeaderUnknownMethod, |
223 fmt.Sprintf("unknown method %v", message.Header.Type), | 288 fmt.Sprintf("unknown method %v", message.Header.Type), |
224 } | 289 } |
225 } | 290 } |
226 return | 291 return |
227 } | 292 } |
228 | 293 |
229 {% endmacro %} | 294 {% endmacro %} |
OLD | NEW |