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 |