| 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 := .Name -}} |
| 11 {{- $interface := .Interface -}} |
| 11 | 12 |
| 12 pub struct {{$endpoint}} { | 13 pub struct {{$endpoint}} { |
| 13 pipe: message_pipe::MessageEndpoint, | 14 pipe: message_pipe::MessageEndpoint, |
| 15 version: u32, |
| 14 } | 16 } |
| 15 | 17 |
| 16 impl {{$endpoint}} { | 18 impl {{$endpoint}} { |
| 17 pub fn new(pipe: message_pipe::MessageEndpoint) -> {{$endpoint}} { | 19 pub fn new(pipe: message_pipe::MessageEndpoint) -> {{$endpoint}} { |
| 18 {{$endpoint}} { pipe: pipe } | 20 {{$endpoint}} { |
| 21 pipe: pipe, |
| 22 version: {{$interface}}::VERSION, |
| 23 } |
| 19 } | 24 } |
| 25 pub fn with_version(pipe: message_pipe::MessageEndpoint, version: u32) -> {{
$endpoint}} { |
| 26 {{$endpoint}} { |
| 27 pipe: pipe, |
| 28 version: version, |
| 29 } |
| 30 } |
| 31 } |
| 32 |
| 33 impl MojomInterface for {{$endpoint}} { |
| 34 fn service_name() -> &'static str { {{$interface}}::SERVICE_NAME } |
| 35 fn version(&self) -> u32 { self.version } |
| 36 fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } |
| 37 fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } |
| 20 } | 38 } |
| 21 | 39 |
| 22 impl CastHandle for {{$endpoint}} { | 40 impl CastHandle for {{$endpoint}} { |
| 23 unsafe fn from_untyped(handle: system::UntypedHandle) -> {{$endpoint}} { | 41 unsafe fn from_untyped(handle: system::UntypedHandle) -> {{$endpoint}} { |
| 24 {{$endpoint}} { | 42 {{$endpoint}} { |
| 25 pipe: message_pipe::MessageEndpoint::from_untyped(handle), | 43 pipe: message_pipe::MessageEndpoint::from_untyped(handle), |
| 44 version: 0, // Since we have no other information, assume its the ba
se |
| 26 } | 45 } |
| 27 } | 46 } |
| 28 fn as_untyped(self) -> system::UntypedHandle { | 47 fn as_untyped(self) -> system::UntypedHandle { |
| 29 self.pipe.as_untyped() | 48 self.pipe.as_untyped() |
| 30 } | 49 } |
| 31 } | 50 } |
| 32 | 51 |
| 33 impl MojomEncodable for {{$endpoint}} { | 52 impl MojomEncodable for {{$endpoint}} { |
| 34 impl_encodable_for_interface!(); | 53 impl_encodable_for_interface!(); |
| 35 } | 54 } |
| 36 | 55 |
| 37 {{- end -}} | 56 {{- end -}} |
| 38 ` | 57 ` |
| 39 | 58 |
| 40 const GenerateInterface = ` | 59 const GenerateInterface = ` |
| 41 {{- /* . (dot) refers to the Go type |rustgen.InterfaceTemplate| */ -}} | 60 {{- /* . (dot) refers to the Go type |rustgen.InterfaceTemplate| */ -}} |
| 42 {{- define "GenerateInterface" -}} | 61 {{- define "GenerateInterface" -}} |
| 43 {{- $interface := . -}} | 62 {{- $interface := . -}} |
| 44 // --- {{$interface.Name}} --- | 63 // --- {{$interface.Name}} --- |
| 45 | 64 |
| 46 pub mod {{$interface.Name}} { | 65 pub mod {{$interface.Name}} { |
| 47 pub const SERVICE_NAME: &'static str = "{{$interface.ServiceName}}"; | 66 pub const SERVICE_NAME: &'static str = "{{$interface.ServiceName}}"; |
| 48 pub const VERSION: u32 = {{$interface.Version}}; | 67 pub const VERSION: u32 = {{$interface.Version}}; |
| 49 } | 68 } |
| 50 | 69 |
| 51 {{$client := printf "%s%s" $interface.Name "Client" -}} | 70 {{$client := $interface.Client -}} |
| 52 {{template "GenerateEndpoint" $client}} | 71 {{template "GenerateEndpoint" $client}} |
| 53 | 72 |
| 54 impl MojomInterface for {{$client}} { | 73 impl<R: {{$interface.Name}}Request> MojomInterfaceSend<R> for {{$client.Name}} {
} |
| 55 fn service_name() -> &'static str { {{$interface.Name}}::SERVICE_NAME } | 74 impl MojomInterfaceRecv for {{$client.Name}} { |
| 56 fn version() -> u32 { {{$interface.Name}}::VERSION } | |
| 57 fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } | |
| 58 fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } | |
| 59 } | |
| 60 | |
| 61 impl<R: {{$interface.Name}}Request> MojomInterfaceSend<R> for {{$client}} {} | |
| 62 impl MojomInterfaceRecv for {{$client}} { | |
| 63 type Container = {{$interface.Name}}ResponseOption; | 75 type Container = {{$interface.Name}}ResponseOption; |
| 64 } | 76 } |
| 65 | 77 |
| 66 {{$server := printf "%s%s" $interface.Name "Server" -}} | 78 {{$server := $interface.Server -}} |
| 67 {{template "GenerateEndpoint" $server}} | 79 {{template "GenerateEndpoint" $server}} |
| 68 | 80 |
| 69 impl MojomInterface for {{$server}} { | 81 impl<R: {{$interface.Name}}Response> MojomInterfaceSend<R> for {{$server.Name}}
{} |
| 70 fn service_name() -> &'static str { {{$interface.Name}}::SERVICE_NAME } | 82 impl MojomInterfaceRecv for {{$server.Name}} { |
| 71 fn version() -> u32 { {{$interface.Name}}::VERSION } | |
| 72 fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } | |
| 73 fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } | |
| 74 } | |
| 75 | |
| 76 impl<R: {{$interface.Name}}Response> MojomInterfaceSend<R> for {{$server}} {} | |
| 77 impl MojomInterfaceRecv for {{$server}} { | |
| 78 type Container = {{$interface.Name}}RequestOption; | 83 type Container = {{$interface.Name}}RequestOption; |
| 79 } | 84 } |
| 80 | 85 |
| 81 // Enums | 86 // Enums |
| 82 {{range $enum := $interface.Enums -}} | 87 {{range $enum := $interface.Enums -}} |
| 83 {{template "GenerateEnum" $enum}} | 88 {{template "GenerateEnum" $enum}} |
| 84 {{end}} | 89 {{end}} |
| 85 | 90 |
| 86 // Constants | 91 // Constants |
| 87 {{range $const := $interface.Constants -}} | 92 {{range $const := $interface.Constants -}} |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 } | 152 } |
| 148 | 153 |
| 149 {{range $message := $interface.Messages -}} | 154 {{range $message := $interface.Messages -}} |
| 150 /// Message: {{$message.Name}} | 155 /// Message: {{$message.Name}} |
| 151 pub mod {{$message.Name}} { | 156 pub mod {{$message.Name}} { |
| 152 pub const ORDINAL: u32 = {{$message.MessageOrdinal}}; | 157 pub const ORDINAL: u32 = {{$message.MessageOrdinal}}; |
| 153 pub const MIN_VERSION: u32 = {{$message.MinVersion}}; | 158 pub const MIN_VERSION: u32 = {{$message.MinVersion}}; |
| 154 } | 159 } |
| 155 {{template "GenerateStruct" $message.RequestStruct}} | 160 {{template "GenerateStruct" $message.RequestStruct}} |
| 156 impl MojomMessage for {{$message.RequestStruct.Name}} { | 161 impl MojomMessage for {{$message.RequestStruct.Name}} { |
| 162 fn min_version() -> u32 { {{$message.Name}}::MIN_VERSION } |
| 157 fn create_header() -> MessageHeader { | 163 fn create_header() -> MessageHeader { |
| 158 MessageHeader::new({{$interface.Name}}::VERSION, | 164 MessageHeader::new( |
| 165 {{- if eq $message.ResponseStruct.Name "" -}} |
| 166 0, |
| 159 {{$message.Name}}::ORDINAL, | 167 {{$message.Name}}::ORDINAL, |
| 160 {{- if eq $message.ResponseStruct.Name "" -}} | |
| 161 message::MESSAGE_HEADER_NO_FLAG) | 168 message::MESSAGE_HEADER_NO_FLAG) |
| 162 {{else}} | 169 {{else}} |
| 170 1, |
| 171 {{$message.Name}}::ORDINAL, |
| 163 message::MESSAGE_HEADER_EXPECT_RESPONSE) | 172 message::MESSAGE_HEADER_EXPECT_RESPONSE) |
| 164 {{end}} | 173 {{end}} |
| 165 } | 174 } |
| 166 } | 175 } |
| 167 impl {{$interface.Name}}Request for {{$message.RequestStruct.Name}} {} | 176 impl {{$interface.Name}}Request for {{$message.RequestStruct.Name}} {} |
| 168 | 177 |
| 169 {{if ne $message.ResponseStruct.Name "" -}} | 178 {{if ne $message.ResponseStruct.Name "" -}} |
| 170 {{template "GenerateStruct" $message.ResponseStruct}} | 179 {{template "GenerateStruct" $message.ResponseStruct}} |
| 171 | 180 |
| 172 impl MojomMessage for {{$message.ResponseStruct.Name}} { | 181 impl MojomMessage for {{$message.ResponseStruct.Name}} { |
| 182 fn min_version() -> u32 { {{$message.Name}}::MIN_VERSION } |
| 173 fn create_header() -> MessageHeader { | 183 fn create_header() -> MessageHeader { |
| 174 MessageHeader::new({{$interface.Name}}::VERSION, | 184 MessageHeader::new(1, |
| 175 {{$message.Name}}::ORDINAL, | 185 {{$message.Name}}::ORDINAL, |
| 176 message::MESSAGE_HEADER_IS_RESPONSE) | 186 message::MESSAGE_HEADER_IS_RESPONSE) |
| 177 } | 187 } |
| 178 } | 188 } |
| 179 impl {{$interface.Name}}Response for {{$message.RequestStruct.Name}} {} | 189 impl {{$interface.Name}}Response for {{$message.ResponseStruct.Name}} {} |
| 180 | 190 |
| 181 {{- end}} | 191 {{- end}} |
| 182 {{- end -}} | 192 {{- end -}} |
| 183 {{- end -}} | 193 {{- end -}} |
| 184 ` | 194 ` |
| OLD | NEW |