Index: mojom/generators/rust/templates/interface.tmpl.go |
diff --git a/mojom/generators/rust/templates/interface.tmpl.go b/mojom/generators/rust/templates/interface.tmpl.go |
index e8af6aca8982d08a2070e8fe0241a31a1a54225c..f404fa49037b965247ab2f44a782e3e97bdc492f 100644 |
--- a/mojom/generators/rust/templates/interface.tmpl.go |
+++ b/mojom/generators/rust/templates/interface.tmpl.go |
@@ -7,22 +7,41 @@ package templates |
const GenerateEndpoint = ` |
{{- /* . (dot) refers to a string which is the endpoint's name */ -}} |
{{- define "GenerateEndpoint" -}} |
-{{- $endpoint := . -}} |
+{{- $endpoint := .Name -}} |
+{{- $interface := .Interface -}} |
pub struct {{$endpoint}} { |
pipe: message_pipe::MessageEndpoint, |
+ version: u32, |
} |
impl {{$endpoint}} { |
pub fn new(pipe: message_pipe::MessageEndpoint) -> {{$endpoint}} { |
- {{$endpoint}} { pipe: pipe } |
+ {{$endpoint}} { |
+ pipe: pipe, |
+ version: {{$interface}}::VERSION, |
+ } |
+ } |
+ pub fn with_version(pipe: message_pipe::MessageEndpoint, version: u32) -> {{$endpoint}} { |
+ {{$endpoint}} { |
+ pipe: pipe, |
+ version: version, |
+ } |
} |
} |
+impl MojomInterface for {{$endpoint}} { |
+ fn service_name() -> &'static str { {{$interface}}::SERVICE_NAME } |
+ fn version(&self) -> u32 { self.version } |
+ fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } |
+ fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } |
+} |
+ |
impl CastHandle for {{$endpoint}} { |
unsafe fn from_untyped(handle: system::UntypedHandle) -> {{$endpoint}} { |
{{$endpoint}} { |
pipe: message_pipe::MessageEndpoint::from_untyped(handle), |
+ version: 0, // Since we have no other information, assume its the base |
} |
} |
fn as_untyped(self) -> system::UntypedHandle { |
@@ -48,33 +67,19 @@ pub mod {{$interface.Name}} { |
pub const VERSION: u32 = {{$interface.Version}}; |
} |
-{{$client := printf "%s%s" $interface.Name "Client" -}} |
+{{$client := $interface.Client -}} |
{{template "GenerateEndpoint" $client}} |
-impl MojomInterface for {{$client}} { |
- fn service_name() -> &'static str { {{$interface.Name}}::SERVICE_NAME } |
- fn version() -> u32 { {{$interface.Name}}::VERSION } |
- fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } |
- fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } |
-} |
- |
-impl<R: {{$interface.Name}}Request> MojomInterfaceSend<R> for {{$client}} {} |
-impl MojomInterfaceRecv for {{$client}} { |
+impl<R: {{$interface.Name}}Request> MojomInterfaceSend<R> for {{$client.Name}} {} |
+impl MojomInterfaceRecv for {{$client.Name}} { |
type Container = {{$interface.Name}}ResponseOption; |
} |
-{{$server := printf "%s%s" $interface.Name "Server" -}} |
+{{$server := $interface.Server -}} |
{{template "GenerateEndpoint" $server}} |
-impl MojomInterface for {{$server}} { |
- fn service_name() -> &'static str { {{$interface.Name}}::SERVICE_NAME } |
- fn version() -> u32 { {{$interface.Name}}::VERSION } |
- fn pipe(&self) -> &message_pipe::MessageEndpoint { &self.pipe } |
- fn unwrap(self) -> message_pipe::MessageEndpoint { self.pipe } |
-} |
- |
-impl<R: {{$interface.Name}}Response> MojomInterfaceSend<R> for {{$server}} {} |
-impl MojomInterfaceRecv for {{$server}} { |
+impl<R: {{$interface.Name}}Response> MojomInterfaceSend<R> for {{$server.Name}} {} |
+impl MojomInterfaceRecv for {{$server.Name}} { |
type Container = {{$interface.Name}}RequestOption; |
} |
@@ -154,12 +159,16 @@ pub mod {{$message.Name}} { |
} |
{{template "GenerateStruct" $message.RequestStruct}} |
impl MojomMessage for {{$message.RequestStruct.Name}} { |
+ fn min_version() -> u32 { {{$message.Name}}::MIN_VERSION } |
fn create_header() -> MessageHeader { |
- MessageHeader::new({{$interface.Name}}::VERSION, |
- {{$message.Name}}::ORDINAL, |
+ MessageHeader::new( |
{{- if eq $message.ResponseStruct.Name "" -}} |
+ 0, |
+ {{$message.Name}}::ORDINAL, |
message::MESSAGE_HEADER_NO_FLAG) |
{{else}} |
+ 1, |
+ {{$message.Name}}::ORDINAL, |
message::MESSAGE_HEADER_EXPECT_RESPONSE) |
{{end}} |
} |
@@ -170,13 +179,14 @@ impl {{$interface.Name}}Request for {{$message.RequestStruct.Name}} {} |
{{template "GenerateStruct" $message.ResponseStruct}} |
impl MojomMessage for {{$message.ResponseStruct.Name}} { |
+ fn min_version() -> u32 { {{$message.Name}}::MIN_VERSION } |
fn create_header() -> MessageHeader { |
- MessageHeader::new({{$interface.Name}}::VERSION, |
+ MessageHeader::new(1, |
{{$message.Name}}::ORDINAL, |
message::MESSAGE_HEADER_IS_RESPONSE) |
} |
} |
-impl {{$interface.Name}}Response for {{$message.RequestStruct.Name}} {} |
+impl {{$interface.Name}}Response for {{$message.ResponseStruct.Name}} {} |
{{- end}} |
{{- end -}} |