| 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 const GenerateEndpoint = ` | 7 const GenerateEndpoint = ` |
| 8 {{- /* . (dot) refers to a string which is the endpoint's name */ -}} | 8 {{- /* . (dot) refers to a string which is the endpoint's name */ -}} |
| 9 {{- define "GenerateEndpoint" -}} | 9 {{- define "GenerateEndpoint" -}} |
| 10 {{- $endpoint := . -}} | 10 {{- $endpoint := . -}} |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 93 |
| 94 {{- $req_option := printf "%s%s" $interface.Name "RequestOption" }} | 94 {{- $req_option := printf "%s%s" $interface.Name "RequestOption" }} |
| 95 {{- $rsp_option := printf "%s%s" $interface.Name "ResponseOption" }} | 95 {{- $rsp_option := printf "%s%s" $interface.Name "ResponseOption" }} |
| 96 | 96 |
| 97 pub enum {{$req_option}} { | 97 pub enum {{$req_option}} { |
| 98 {{range $message := $interface.Messages}} {{$message.Name}}({{$message.Reques
tStruct.Name}}), | 98 {{range $message := $interface.Messages}} {{$message.Name}}({{$message.Reques
tStruct.Name}}), |
| 99 {{end}} | 99 {{end}} |
| 100 } | 100 } |
| 101 | 101 |
| 102 impl MojomMessageOption for {{$req_option}} { | 102 impl MojomMessageOption for {{$req_option}} { |
| 103 fn decode_payload(ordinal: u32, buffer: &[u8], handles: Vec<UntypedHandle>)
-> Self { | 103 fn decode_payload(header: MessageHeader, buffer: &[u8], handles: Vec<Untyped
Handle>) -> Result<Self, ValidationError> { |
| 104 match ordinal { | 104 match header.name { |
| 105 {{range $message := $interface.Messages}} {{$message.Name}}::ORDINAL
=> {{$req_option}}::{{$message.Name}}({{$message.RequestStruct.Name}}::deserial
ize(buffer, handles)), | 105 {{range $message := $interface.Messages}} {{$message.Name}}::ORDINAL
=> { |
| 106 {{end}} _ => panic!("Unknown message found: {}", ordinal), | 106 if header.flags != {{- if eq $message.ResponseStruct.Name "" -}} |
| 107 } | 107 » » message::MESSAGE_HEADER_NO_FLAG |
| 108 » » » {{- else -}} |
| 109 message::MESSAGE_HEADER_EXPECT_RESPONSE |
| 110 » » » {{- end -}} { |
| 111 return Err(ValidationError::MessageHeaderInvalidFlags); |
| 112 } |
| 113 match {{$message.RequestStruct.Name}}::deserialize(buffer, handl
es) { |
| 114 Ok(value) => Ok({{$req_option}}::{{$message.Name}}(value)), |
| 115 Err(err) => return Err(err), |
| 116 } |
| 117 }, |
| 118 {{end}} _ => Err(ValidationError::MessageHeaderUnknownMethod), |
| 119 } |
| 108 } | 120 } |
| 109 } | 121 } |
| 110 | 122 |
| 111 pub enum {{$rsp_option}} { | 123 pub enum {{$rsp_option}} { |
| 112 {{range $message := $interface.Messages}} | 124 {{range $message := $interface.Messages}} |
| 113 {{- if ne $message.ResponseStruct.Name ""}} {{$message.Name}}({{$message.Resp
onseStruct.Name}}), | 125 {{- if ne $message.ResponseStruct.Name ""}} {{$message.Name}}({{$message.Resp
onseStruct.Name}}), |
| 114 {{end -}} | 126 {{end -}} |
| 115 {{end}} | 127 {{end}} |
| 116 } | 128 } |
| 117 | 129 |
| 118 impl MojomMessageOption for {{$rsp_option}} { | 130 impl MojomMessageOption for {{$rsp_option}} { |
| 119 fn decode_payload(ordinal: u32, buffer: &[u8], handles: Vec<UntypedHandle>)
-> Self { | 131 fn decode_payload(header: MessageHeader, buffer: &[u8], handles: Vec<Untyped
Handle>) -> Result<Self, ValidationError> { |
| 120 match ordinal { | 132 if header.flags != message::MESSAGE_HEADER_IS_RESPONSE { |
| 133 return Err(ValidationError::MessageHeaderInvalidFlags); |
| 134 } |
| 135 match header.name { |
| 121 {{range $message := $interface.Messages}} | 136 {{range $message := $interface.Messages}} |
| 122 {{- if ne $message.ResponseStruct.Name ""}} {{$message.Name}}::ORDIN
AL => {{$rsp_option}}::{{$message.Name}}({{$message.ResponseStruct.Name}}::deser
ialize(buffer, handles)), | 137 {{- if ne $message.ResponseStruct.Name ""}} {{$message.Name}}::ORDIN
AL => { |
| 138 match {{$message.ResponseStruct.Name}}::deserialize(buffer, hand
les) { |
| 139 Ok(value) => Ok({{$rsp_option}}::{{$message.Name}}(value)), |
| 140 Err(err) => return Err(err), |
| 141 } |
| 142 }, |
| 123 {{end -}} | 143 {{end -}} |
| 124 {{end}} _ => panic!("Unknown message found, or message has no respon
se: {}", ordinal), | 144 {{end}} _ => Err(ValidationError::MessageHeaderUnknownMethod), |
| 125 } | 145 } |
| 126 } | 146 } |
| 127 } | 147 } |
| 128 | 148 |
| 129 {{range $message := $interface.Messages -}} | 149 {{range $message := $interface.Messages -}} |
| 130 /// Message: {{$message.Name}} | 150 /// Message: {{$message.Name}} |
| 131 pub mod {{$message.Name}} { | 151 pub mod {{$message.Name}} { |
| 132 pub const ORDINAL: u32 = {{$message.MessageOrdinal}}; | 152 pub const ORDINAL: u32 = {{$message.MessageOrdinal}}; |
| 133 pub const MIN_VERSION: u32 = {{$message.MinVersion}}; | 153 pub const MIN_VERSION: u32 = {{$message.MinVersion}}; |
| 134 } | 154 } |
| 135 {{template "GenerateStruct" $message.RequestStruct}} | 155 {{template "GenerateStruct" $message.RequestStruct}} |
| (...skipping 19 matching lines...) Expand all Loading... |
| 155 {{$message.Name}}::ORDINAL, | 175 {{$message.Name}}::ORDINAL, |
| 156 message::MESSAGE_HEADER_IS_RESPONSE) | 176 message::MESSAGE_HEADER_IS_RESPONSE) |
| 157 } | 177 } |
| 158 } | 178 } |
| 159 impl {{$interface.Name}}Response for {{$message.RequestStruct.Name}} {} | 179 impl {{$interface.Name}}Response for {{$message.RequestStruct.Name}} {} |
| 160 | 180 |
| 161 {{- end}} | 181 {{- end}} |
| 162 {{- end -}} | 182 {{- end -}} |
| 163 {{- end -}} | 183 {{- end -}} |
| 164 ` | 184 ` |
| OLD | NEW |