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

Side by Side Diff: mojo/dart/packages/mojo/lib/src/codec.dart

Issue 1983453002: Dart: Refactor Stubs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 7 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 part of bindings; 5 part of bindings;
6 6
7 int align(int size) => 7 int align(int size) =>
8 size + ((kAlignment - (size & kAlignmentMask)) & kAlignmentMask); 8 size + ((kAlignment - (size & kAlignmentMask)) & kAlignmentMask);
9 9
10 const int kAlignment = 8; 10 const int kAlignment = 8;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 211
212 void encodeInterface( 212 void encodeInterface(
213 Object interface, int offset, bool nullable) { 213 Object interface, int offset, bool nullable) {
214 if (interface == null) { 214 if (interface == null) {
215 encodeInvalideHandle(offset, nullable); 215 encodeInvalideHandle(offset, nullable);
216 // Set the version field to 0. 216 // Set the version field to 0.
217 encodeUint32(0, offset + kSerializedHandleSize); 217 encodeUint32(0, offset + kSerializedHandleSize);
218 return; 218 return;
219 } 219 }
220 if (interface is Stub) { 220 if (interface is Stub) {
221 if (interface.isBound) { 221 if (interface.ctrl.isBound) {
222 throw new MojoCodecError( 222 throw new MojoCodecError(
223 'Cannot encode a bound stub for an interface'); 223 'Cannot encode a bound stub for an interface');
224 } 224 }
225 var pipe = new core.MojoMessagePipe(); 225 var pipe = new core.MojoMessagePipe();
226 interface.bind(pipe.endpoints[0]); 226 interface.ctrl.bind(pipe.endpoints[0]);
227 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); 227 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable);
228 // Set the version to the version in the stub. 228 // Set the version to the version in the stub.
229 encodeUint32(interface.version, offset + kSerializedHandleSize); 229 encodeUint32(interface.ctrl.version, offset + kSerializedHandleSize);
230 } else if (interface is Proxy) { 230 } else if (interface is Proxy) {
231 if (!interface.ctrl.isBound) { 231 if (!interface.ctrl.isBound) {
232 throw new MojoCodecError( 232 throw new MojoCodecError(
233 'Cannot encode an unbound proxy for an interface'); 233 'Cannot encode an unbound proxy for an interface');
234 } 234 }
235 if (!interface.ctrl.isOpen) { 235 if (!interface.ctrl.isOpen) {
236 // Make sure that we are listening so that state for the proxy is 236 // Make sure that we are listening so that state for the proxy is
237 // cleaned up when the message is sent and the handle is closed. 237 // cleaned up when the message is sent and the handle is closed.
238 interface.ctrl.beginHandlingEvents(); 238 interface.ctrl.beginHandlingEvents();
239 } 239 }
(...skipping 13 matching lines...) Expand all
253 if (request is Proxy) { 253 if (request is Proxy) {
254 if (request.ctrl.isBound) { 254 if (request.ctrl.isBound) {
255 throw new MojoCodecError( 255 throw new MojoCodecError(
256 'Cannot encode a bound proxy for an interface request'); 256 'Cannot encode a bound proxy for an interface request');
257 } 257 }
258 var pipe = new core.MojoMessagePipe(); 258 var pipe = new core.MojoMessagePipe();
259 request.ctrl.bind(pipe.endpoints[0]); 259 request.ctrl.bind(pipe.endpoints[0]);
260 request.ctrl.beginHandlingEvents(); 260 request.ctrl.beginHandlingEvents();
261 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); 261 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable);
262 } else if (request is Stub) { 262 } else if (request is Stub) {
263 if (!request.isBound) { 263 if (!request.ctrl.isBound) {
264 throw new MojoCodecError( 264 throw new MojoCodecError(
265 'Cannot encode an unbound stub for an interface request'); 265 'Cannot encode an unbound stub for an interface request');
266 } 266 }
267 if (!request.isOpen) { 267 if (!request.ctrl.isOpen) {
268 // Make sure that we are listening so that state for the stub is 268 // Make sure that we are listening so that state for the stub is
269 // cleaned up when the message is sent and the handle is closed. 269 // cleaned up when the message is sent and the handle is closed.
270 request.beginHandlingEvents(); 270 request.ctrl.beginHandlingEvents();
271 } 271 }
272 encodeMessagePipeHandle(request.endpoint, offset, nullable); 272 encodeMessagePipeHandle(request.ctrl.endpoint, offset, nullable);
273 // Set the version to the current version of the stub. 273 // Set the version to the current version of the stub.
274 encodeUint32(request.version, offset + kSerializedHandleSize); 274 encodeUint32(request.ctrl.version, offset + kSerializedHandleSize);
275 } 275 }
276 } 276 }
277 277
278 void encodeNullPointer(int offset, bool nullable) { 278 void encodeNullPointer(int offset, bool nullable) {
279 if (!nullable) { 279 if (!nullable) {
280 throw new MojoCodecError( 280 throw new MojoCodecError(
281 'Cannot encode a null pointer for a non-nullable type'); 281 'Cannot encode a null pointer for a non-nullable type');
282 } 282 }
283 _buffer.buffer.setUint64(_base + offset, 0, Endianness.LITTLE_ENDIAN); 283 _buffer.buffer.setUint64(_base + offset, 0, Endianness.LITTLE_ENDIAN);
284 } 284 }
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 throw new MojoCodecError( 1124 throw new MojoCodecError(
1125 'Incorrect header for map. The size is incorrect.'); 1125 'Incorrect header for map. The size is incorrect.');
1126 } 1126 }
1127 if (header.version != kMapStructHeader.version) { 1127 if (header.version != kMapStructHeader.version) {
1128 throw new MojoCodecError( 1128 throw new MojoCodecError(
1129 'Incorrect header for map. The version is incorrect.'); 1129 'Incorrect header for map. The version is incorrect.');
1130 } 1130 }
1131 return header; 1131 return header;
1132 } 1132 }
1133 } 1133 }
OLDNEW
« no previous file with comments | « mojo/dart/packages/mojo/lib/src/application_connection.dart ('k') | mojo/dart/packages/mojo/lib/src/control_message.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698