| 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 |