OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 package templates | 5 package templates |
6 | 6 |
7 import ( | 7 import ( |
8 "text/template" | 8 "text/template" |
9 ) | 9 ) |
10 | 10 |
11 const interfaceTmplText = ` | 11 const interfaceTmplText = ` |
12 {{- define "Interface" -}} | 12 {{- define "Interface" -}} |
13 {{$interface := . -}} | 13 {{$interface := . -}} |
14 {{ template "InterfaceDecl" $interface }} | 14 {{ template "InterfaceDecl" $interface }} |
15 | 15 |
16 {{- range $method := $interface.Methods -}} | 16 {{- range $method := $interface.Methods}} |
17 {{ template "Method" $method }} | 17 {{ template "Method" $method }} |
18 {{- end -}} | 18 {{- end}} |
19 | 19 |
20 {{- if $interface.ServiceName -}} | 20 {{- if $interface.ServiceName}} |
21 {{ template "ServiceDecl" $interface }} | 21 {{ template "ServiceDecl" $interface }} |
22 {{- end -}} | 22 {{- end}} |
23 {{- end -}} | 23 {{- end -}} |
24 ` | 24 ` |
25 | 25 |
26 const interfaceDeclTmplText = ` | 26 const interfaceDeclTmplText = ` |
27 {{- define "InterfaceDecl" -}} | 27 {{- define "InterfaceDecl" -}} |
28 {{- $interface := . -}} | 28 {{- $interface := . -}} |
29 {{ template "InterfaceInterfaceDecl" $interface }} | 29 {{ template "InterfaceInterfaceDecl" $interface }} |
30 | 30 |
31 {{ template "InterfaceOtherDecl" $interface }} | 31 {{ template "InterfaceOtherDecl" $interface }} |
32 | 32 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 } | 94 } |
95 {{- end -}} | 95 {{- end -}} |
96 ` | 96 ` |
97 | 97 |
98 const methodTmplText = ` | 98 const methodTmplText = ` |
99 {{- define "Method" -}} | 99 {{- define "Method" -}} |
100 {{- $method := . -}} | 100 {{- $method := . -}} |
101 | 101 |
102 {{ template "MethodParams" $method }} | 102 {{ template "MethodParams" $method }} |
103 | 103 |
104 {{ template "MethodSignature" $method }} | |
105 | |
106 {{ template "MethodFunction" $method }} | 104 {{ template "MethodFunction" $method }} |
107 {{- end -}} | 105 {{- end -}} |
108 ` | 106 ` |
109 | 107 |
110 const methodOrdinalsTmplText = ` | 108 const methodOrdinalsTmplText = ` |
111 {{- define "MethodOrdinals" -}} | 109 {{- define "MethodOrdinals" -}} |
112 {{- $interface := . -}} | 110 {{- $interface := . -}} |
113 {{- range $method := $interface.Methods -}} | 111 {{- range $method := $interface.Methods -}} |
114 const {{$method.FullName}}_Ordinal uint32 = {{$method.Ordinal}} | 112 const {{$method.FullName}}_Ordinal uint32 = {{$method.Ordinal}} |
115 {{end -}} | 113 {{end -}} |
116 {{- end -}} | 114 {{- end -}} |
117 ` | 115 ` |
118 | 116 |
119 const methodParamsTmplText = ` | 117 const methodParamsTmplText = ` |
120 {{- define "MethodParams" -}} | 118 {{- define "MethodParams" -}} |
121 {{- $interface := . -}} | 119 {{- $interface := . -}} |
122 {{ template "Struct" $interface.Params }} | 120 {{ template "Struct" $interface.Params }} |
123 | 121 |
124 {{- if $interface.ResponseParams -}} | 122 {{- if $interface.ResponseParams}} |
125 {{ template "Struct" $interface.ResponseParams }} | 123 {{ template "Struct" $interface.ResponseParams }} |
126 {{- end -}} | 124 {{- end -}} |
127 {{- end -}} | 125 {{- end -}} |
128 ` | 126 ` |
129 | 127 |
130 const methodSignatureTmplText = ` | 128 const methodSignatureTmplText = ` |
131 {{- define "MethodSignature" -}} | 129 {{- define "MethodSignature" -}} |
132 {{- $method := . -}} | 130 {{- $method := . -}} |
133 {{$method.MethodName}}( | 131 {{$method.MethodName}}( |
134 {{- range $field := $method.Params.Fields -}} | 132 {{- range $field := $method.Params.Fields -}} |
135 in{{$field.Name}} {{$field.Type}}, | 133 in{{$field.Name}} {{$field.Type}}, |
136 {{- end -}} | 134 {{- end -}} |
137 ) ( | 135 ) ( |
138 {{- if $method.ResponseParams -}} | 136 {{- if $method.ResponseParams -}} |
139 {{- range $field := $method.ResponseParams.Fields -}} | 137 {{- range $field := $method.ResponseParams.Fields -}} |
140 out{{$field.Name}} {{$field.Type}}, | 138 out{{$field.Name}} {{$field.Type}}, |
141 {{- end -}} | 139 {{- end -}} |
142 {{- end -}} | 140 {{- end -}} |
143 err error) | 141 err error) |
144 {{- end -}} | 142 {{- end -}} |
145 ` | 143 ` |
146 | 144 |
147 const methodFuncTmplText = ` | 145 const methodFuncTmplText = ` |
148 {{- define "MethodFunction" -}} | 146 {{- define "MethodFunction" -}} |
149 {{- $method := . -}} | 147 {{- $method := . -}} |
150 func (p *{{$method.Interface.Name}}_Proxy) {{ template "MethodSignature" $method
}} { | 148 func (p *{{$method.Interface.Name}}_Proxy) {{ template "MethodSignature" $method
}} { |
151 » payload := &{{$method.Params}}{ | 149 » payload := &{{$method.Params.Name}}{ |
152 {{range $param := $method.Params.Fields -}} | 150 {{range $param := $method.Params.Fields -}} |
153 » » {{$param.Name}}, | 151 » » in{{$param.Name}}, |
154 {{end}} | 152 {{end}} |
155 } | 153 } |
156 | 154 |
157 header := bindings.MessageHeader{ | 155 header := bindings.MessageHeader{ |
158 Type: {{$method.FullName}}_Ordinal, | 156 Type: {{$method.FullName}}_Ordinal, |
159 Flags: bindings.MessageExpectsResponseFlag, | 157 Flags: bindings.MessageExpectsResponseFlag, |
160 {{- if $method.ResponseParams}} | 158 {{- if $method.ResponseParams}} |
161 RequestId: p.ids.Count(), | 159 RequestId: p.ids.Count(), |
162 {{- end}} | 160 {{- end}} |
163 } | 161 } |
164 var message *bindings.Message | 162 var message *bindings.Message |
165 if message, err = bindings.EncodeMessage(header, payload); err != nil { | 163 if message, err = bindings.EncodeMessage(header, payload); err != nil { |
166 err = fmt.Errorf("can't encode request: %v", err.Error()) | 164 err = fmt.Errorf("can't encode request: %v", err.Error()) |
167 p.Close_Proxy() | 165 p.Close_Proxy() |
168 return | 166 return |
169 } | 167 } |
170 {{- if $method.ResponseParams}} | 168 {{if $method.ResponseParams}} |
171 readResult := <-p.router.AcceptWithResponse(message) | 169 readResult := <-p.router.AcceptWithResponse(message) |
172 if err = readResult.Error; err != nil { | 170 if err = readResult.Error; err != nil { |
173 p.Close_Proxy() | 171 p.Close_Proxy() |
174 return | 172 return |
175 } | 173 } |
176 if readResult.Message.Header.Flags != bindings.MessageIsResponseFlag { | 174 if readResult.Message.Header.Flags != bindings.MessageIsResponseFlag { |
177 err = &bindings.ValidationError{bindings.MessageHeaderInvalidFla
gs, | 175 err = &bindings.ValidationError{bindings.MessageHeaderInvalidFla
gs, |
178 fmt.Sprintf("invalid message header flag: %v", readResul
t.Message.Header.Flags), | 176 fmt.Sprintf("invalid message header flag: %v", readResul
t.Message.Header.Flags), |
179 } | 177 } |
180 return | 178 return |
(...skipping 10 matching lines...) Expand all Loading... |
191 return | 189 return |
192 } | 190 } |
193 {{- range $param := $method.ResponseParams.Fields}} | 191 {{- range $param := $method.ResponseParams.Fields}} |
194 out{{$param.Name}} = response.out{{$param.Name}} | 192 out{{$param.Name}} = response.out{{$param.Name}} |
195 {{- end -}} | 193 {{- end -}} |
196 {{- else -}} | 194 {{- else -}} |
197 if err = p.router.Accept(message); err != nil { | 195 if err = p.router.Accept(message); err != nil { |
198 p.Close_Proxy() | 196 p.Close_Proxy() |
199 return | 197 return |
200 } | 198 } |
201 {{end -}} | 199 {{end}} |
202 return | 200 return |
203 } | 201 } |
204 {{- end -}} | 202 {{- end -}} |
205 ` | 203 ` |
206 | 204 |
207 const serviceDeclTmplText = ` | 205 const serviceDeclTmplText = ` |
208 {{- define "ServiceDecl" -}} | 206 {{- define "ServiceDecl" -}} |
209 {{- $interface := . -}} | 207 {{- $interface := . -}} |
210 const {{$interface.PrivateName}}_Name string = "{{$interface.ServiceName}}" | 208 const {{$interface.PrivateName}}_Name string = "{{$interface.ServiceName}}" |
211 | 209 |
(...skipping 16 matching lines...) Expand all Loading... |
228 template.Must(goFileTmpl.Parse(interfaceDeclTmplText)) | 226 template.Must(goFileTmpl.Parse(interfaceDeclTmplText)) |
229 template.Must(goFileTmpl.Parse(interfaceInterfaceDeclTmplText)) | 227 template.Must(goFileTmpl.Parse(interfaceInterfaceDeclTmplText)) |
230 template.Must(goFileTmpl.Parse(interfaceOtherDeclTmplText)) | 228 template.Must(goFileTmpl.Parse(interfaceOtherDeclTmplText)) |
231 template.Must(goFileTmpl.Parse(serviceDeclTmplText)) | 229 template.Must(goFileTmpl.Parse(serviceDeclTmplText)) |
232 template.Must(goFileTmpl.Parse(methodOrdinalsTmplText)) | 230 template.Must(goFileTmpl.Parse(methodOrdinalsTmplText)) |
233 template.Must(goFileTmpl.Parse(methodParamsTmplText)) | 231 template.Must(goFileTmpl.Parse(methodParamsTmplText)) |
234 template.Must(goFileTmpl.Parse(methodSignatureTmplText)) | 232 template.Must(goFileTmpl.Parse(methodSignatureTmplText)) |
235 template.Must(goFileTmpl.Parse(methodFuncTmplText)) | 233 template.Must(goFileTmpl.Parse(methodFuncTmplText)) |
236 template.Must(goFileTmpl.Parse(methodTmplText)) | 234 template.Must(goFileTmpl.Parse(methodTmplText)) |
237 } | 235 } |
OLD | NEW |