Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl

Issue 851173002: Dart: Encode/Decode handle and interface types. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Fix Interface encode parameters Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 {%- for method in interface.methods %} 1 {%- for method in interface.methods %}
2 const int k{{interface|name}}_{{method|name}}_name = {{method.ordinal}}; 2 const int k{{interface|name}}_{{method|name}}_name = {{method.ordinal}};
3 {%- endfor %} 3 {%- endfor %}
4 4
5 abstract class {{interface|name}}Calls { 5 abstract class {{interface|name}}Calls {
6 void sendMessage(bindings.Struct message, int name); 6 void sendMessage(bindings.Struct message, int name);
7 Future sendMessageWithRequestId(bindings.Struct message, int name, int id); 7 Future sendMessageWithRequestId(bindings.Struct message, int name, int id);
8 8
9 {%- for method in interface.methods %} 9 {%- for method in interface.methods %}
10 {%- if method.response_parameters == None %} 10 {%- if method.response_parameters == None %}
(...skipping 28 matching lines...) Expand all
39 requestId, 39 requestId,
40 bindings.MessageHeader.kMessageExpectsResponse); 40 bindings.MessageHeader.kMessageExpectsResponse);
41 } 41 }
42 {%- endif %} 42 {%- endif %}
43 {%- endfor %} 43 {%- endfor %}
44 } 44 }
45 45
46 class {{interface|name}}Client extends bindings.Client with {{interface|name}}Ca lls { 46 class {{interface|name}}Client extends bindings.Client with {{interface|name}}Ca lls {
47 {{interface|name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi nt); 47 {{interface|name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi nt);
48 48
49 {{interface|name}}Client.fromHandle(int handle) : super.fromHandle(handle); 49 {{interface|name}}Client.fromHandle(core.MojoHandle handle) :
50 super.fromHandle(handle);
51
52 {{interface|name}}Client.unbound() : super.unbound();
53
54 static {{interface|name}}Client newFromEndpoint(
55 core.MojoMessagePipeEndpoint endpoint) =>
56 new {{interface|name}}Client(endpoint);
50 57
51 void handleResponse(bindings.ServiceMessage message) { 58 void handleResponse(bindings.ServiceMessage message) {
52 switch (message.header.type) { 59 switch (message.header.type) {
53 {%- for method in interface.methods %} 60 {%- for method in interface.methods %}
54 {%- if method.response_parameters != None %} 61 {%- if method.response_parameters != None %}
55 {%- set response_struct = method|response_struct_from_method %} 62 {%- set response_struct = method|response_struct_from_method %}
56 case k{{interface|name}}_{{method|name}}_name: 63 case k{{interface|name}}_{{method|name}}_name:
57 var r = {{response_struct|name}}.deserialize( 64 var r = {{response_struct|name}}.deserialize(
58 message.payload); 65 message.payload);
59 if (!message.header.hasRequestId) { 66 if (!message.header.hasRequestId) {
60 throw 'Expected a message with a valid request Id.'; 67 throw 'Expected a message with a valid request Id.';
61 } 68 }
62 Completer c = completerMap[message.header.requestId]; 69 Completer c = completerMap[message.header.requestId];
63 completerMap[message.header.requestId] = null; 70 completerMap[message.header.requestId] = null;
64 c.complete(r); 71 c.complete(r);
65 break; 72 break;
66 {%- endif %} 73 {%- endif %}
67 {%- endfor %} 74 {%- endfor %}
68 default: 75 default:
69 throw new Exception("Unexpected message name"); 76 throw new Exception("Unexpected message name");
70 break; 77 break;
71 } 78 }
72 } 79 }
73 } 80 }
74 81
75 82
76 abstract class {{interface|name}}Interface extends bindings.Interface 83 class {{interface|name}}Interface extends bindings.Interface
77 {% if interface.client != None -%} 84 {% if interface.client != None -%}
78 with {{imported_from[interface.client]}}{{interface.client|upper_camel_case}}Cal ls 85 with {{imported_from[interface.client]}}{{interface.client|upper_camel_case}}Cal ls
79 {% endif -%} { 86 {% endif -%} {
87 {{interface|name}}Interface _delegate = null;
88
80 {{interface|name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end point); 89 {{interface|name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end point);
81 90
82 {{interface|name}}Interface.fromHandle(int handle) : super.fromHandle(handle); 91 {{interface|name}}Interface.fromHandle(core.MojoHandle handle) :
92 super.fromHandle(handle);
93
94 {{interface|name}}Interface.unbound() : super.unbound();
95
96 static {{interface|name}}Interface newFromEndpoint(
97 core.MojoMessagePipeEndpoint endpoint) =>
98 new {{interface|name}}Interface(endpoint);
83 99
84 static const String name = '{{namespace|replace(".","::")}}::{{interface|name} }'; 100 static const String name = '{{namespace|replace(".","::")}}::{{interface|name} }';
85 101
86 {% for method in interface.methods %} 102 {% for method in interface.methods %}
87 {%- if method.response_parameters == None %} 103 {%- if method.response_parameters == None %}
88 void {{method|name}}( 104 void {{method|name}}(
89 {%- for parameter in method.parameters -%} 105 {%- for parameter in method.parameters -%}
90 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %} 106 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %}
91 {%- endfor -%} 107 {%- endfor -%}
92 ); 108 ) {
109 assert(_delegate != null);
110 _delegate.{{method|name}}(
111 {%- for parameter in method.parameters -%}
112 {{parameter|name}}{% if not loop.last %}, {% endif %}
113 {%- endfor %});
114 }
93 {%- else %} 115 {%- else %}
94 {%- set response_struct = method|response_struct_from_method %} 116 {%- set response_struct = method|response_struct_from_method %}
95 Future<{{response_struct|name}}> {{method|name}}( 117 Future<{{response_struct|name}}> {{method|name}}(
96 {%- for parameter in method.parameters -%} 118 {%- for parameter in method.parameters -%}
97 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %} 119 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %}
98 {%- endfor -%} 120 {%- endfor -%}
99 ); 121 ) {
122 assert(_delegate != null);
123 return _delegate.{{method|name}}(
124 {%- for parameter in method.parameters -%}
125 {{parameter|name}}{% if not loop.last %}, {% endif %}
126 {%- endfor %});
127 }
100 {%- endif %} 128 {%- endif %}
101 {%- endfor %} 129 {%- endfor %}
102 130
103 Future<bindings.Message> handleMessage(bindings.ServiceMessage message) { 131 Future<bindings.Message> handleMessage(bindings.ServiceMessage message) {
104 switch (message.header.type) { 132 switch (message.header.type) {
105 {%- for method in interface.methods %} 133 {%- for method in interface.methods %}
106 {%- set request_struct = method|struct_from_method %} 134 {%- set request_struct = method|struct_from_method %}
107 case k{{interface|name}}_{{method|name}}_name: 135 case k{{interface|name}}_{{method|name}}_name:
108 var params = {{request_struct|name}}.deserialize( 136 var params = {{request_struct|name}}.deserialize(
109 message.payload); 137 message.payload);
(...skipping 19 matching lines...) Expand all
129 }); 157 });
130 {%- endif %} 158 {%- endif %}
131 break; 159 break;
132 {%- endfor %} 160 {%- endfor %}
133 default: 161 default:
134 throw new Exception("Unexpected message name"); 162 throw new Exception("Unexpected message name");
135 break; 163 break;
136 } 164 }
137 return null; 165 return null;
138 } 166 }
167
168 {{interface|name}}Interface get delegate => _delegate;
169 set delegate({{interface|name}}Interface d) {
170 assert(_delegate == null);
171 _delegate = d;
172 }
139 } 173 }
140 174
141 175
142 {#--- TODO(zra): Validation #} 176 {#--- TODO(zra): Validation #}
143 177
144 178
145 {#--- Interface Constants #} 179 {#--- Interface Constants #}
146 {% for constant in interface.constants %} 180 {% for constant in interface.constants %}
147 final {{constant|name}} = {{constant.value|expression_to_text}}; 181 final {{constant|name}} = {{constant.value|expression_to_text}};
148 {%- endfor %} 182 {%- endfor %}
149 183
150 184
151 {#--- Interface Enums #} 185 {#--- Interface Enums #}
152 {%- from "enum_definition.tmpl" import enum_def -%} 186 {%- from "enum_definition.tmpl" import enum_def -%}
153 {%- for enum in interface.enums %} 187 {%- for enum in interface.enums %}
154 {{ enum_def("", enum) }} 188 {{ enum_def("", enum) }}
155 {%- endfor %} 189 {%- endfor %}
OLDNEW
« no previous file with comments | « mojo/public/dart/src/interface.dart ('k') | mojo/public/tools/bindings/generators/mojom_dart_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698