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

Side by Side Diff: mojo/public/js/lib/control_message_proxy.js

Issue 2676443005: Add interface versioning. Methods queryVersion and requireVersion. (Closed)
Patch Set: Add interface_control_messages.mojom.js to build resources Created 3 years, 10 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 define("mojo/public/js/lib/control_message_proxy", [
6 "mojo/public/interfaces/bindings/interface_control_messages.mojom",
7 "mojo/public/js/validator",
yzshen1 2017/02/11 01:11:29 Alphabetically, please.
wangjimmy 2017/02/13 20:43:07 Done.
8 "mojo/public/js/codec",
9 ], function(interfaceCtrlMsgs, validator, codec) {
yzshen1 2017/02/11 01:11:29 interfaceCtrlMsgs -> controlMessages?
wangjimmy 2017/02/13 20:43:07 Done.
10
11 var Validator = validator.Validator;
12
13 function sendRunOrClosePipeMessage(receiver, runOrClosePipeMsgParams) {
14 var messageName = interfaceCtrlMsgs.kRunOrClosePipeMessageId;
15 var payloadSize = interfaceCtrlMsgs.RunOrClosePipeMessageParams
16 .encodedSize;
17 var builder = new codec.MessageBuilder(messageName, payloadSize);
18 builder.encodeStruct(interfaceCtrlMsgs.RunOrClosePipeMessageParams,
19 runOrClosePipeMsgParams);
20 var message = builder.finish();
21 receiver.accept(message);
22 }
23
24 function validateControlResponse(message) {
25 var messageValidator = new Validator(message);
26 var error = messageValidator.validateMessageIsResponse();
27 if (error != validator.validationError.NONE) {
28 throw error;
29 }
30
31 if (!message.getName() &&
yzshen1 2017/02/11 01:11:29 Do we need this check at all?
wangjimmy 2017/02/13 20:43:07 Done.
32 message.getName() != interfaceCtrlMsgs.kRunMessageId) {
33 throw new Error('Control message name is not kRunMessageId');
yzshen1 2017/02/11 01:11:29 Please consider using double quotes. And we need
wangjimmy 2017/02/13 20:43:07 Done.
34 }
35 }
36
37 function accept(message) {
yzshen1 2017/02/11 01:11:29 Could we give it a more descriptive name? We have
wangjimmy 2017/02/13 20:43:07 Done.
38 validateControlResponse(message);
39
40 var reader = new codec.MessageReader(message);
41 var runResponseMessageParams = reader.decodeStruct(
42 interfaceCtrlMsgs.RunResponseMessageParams);
43
44 return Promise.resolve(runResponseMessageParams);
45 }
46
47 /**
48 * Sends the given run message through the receiver.
49 * Accept the response message from the receiver and decode
50 * the message struct to RunResponseMessageParams.
51 * .
52 * @param {Router} receiver.
53 * @param {RunMessageParams} runMessageParams to be sent via a message.
54 * @return {Promise} that resolves to a RunResponseMessageParams.
55 */
56 function sendRunMessage(receiver, runMsgParams) {
57 var messageName = interfaceCtrlMsgs.kRunMessageId;
58 var payloadSize = interfaceCtrlMsgs.RunMessageParams.encodedSize;
59 // requestID is set to 0, but is later
yzshen1 2017/02/11 01:11:29 Please fill this line to as close to 80 chars as p
wangjimmy 2017/02/13 20:43:07 Done.
60 // properly set by Router's acceptAndExpectResponse
yzshen1 2017/02/11 01:11:29 Usually in comments, we use xxx() to indicate func
wangjimmy 2017/02/13 20:43:07 Done.
61 var builder = new codec.MessageWithRequestIDBuilder(messageName,
62 payloadSize, codec.kMessageExpectsResponse, 0);
63 builder.encodeStruct(interfaceCtrlMsgs.RunMessageParams, runMsgParams);
64 var message = builder.finish();
65
66 return receiver.acceptAndExpectResponse(message).then(accept);
67 }
68
69 function ControlMessageProxy() {
70 this.receiver = null;
71 }
72
73 ControlMessageProxy.prototype.queryVersion = function() {
74 var runMsgParams = new interfaceCtrlMsgs.RunMessageParams();
75 runMsgParams.input = new interfaceCtrlMsgs.RunInput();
76 runMsgParams.input.query_version = new interfaceCtrlMsgs.QueryVersion();
77
78 return sendRunMessage(this.receiver, runMsgParams).then(function(
79 runResponseMsgParams) {
yzshen1 2017/02/11 01:11:29 4 spaces.
wangjimmy 2017/02/13 20:43:07 Done.
80 return runResponseMsgParams.output.query_version_result.version;
81 });
82 };
83
84 ControlMessageProxy.prototype.requireVersion = function(version) {
85 var runOrClosePipeMsgParams = new
86 interfaceCtrlMsgs.RunOrClosePipeMessageParams();
yzshen1 2017/02/11 01:11:29 4 spaces.
wangjimmy 2017/02/13 20:43:07 Done.
87 runOrClosePipeMsgParams.input = new interfaceCtrlMsgs.RunOrClosePipeInput();
88 runOrClosePipeMsgParams.input.require_version = new
89 interfaceCtrlMsgs.RequireVersion({'version': version});
yzshen1 2017/02/11 01:11:29 4 spaces.
wangjimmy 2017/02/13 20:43:07 Done.
90 sendRunOrClosePipeMessage(this.receiver, runOrClosePipeMsgParams);
91 };
92
93 var exports = {};
94 exports.ControlMessageProxy = ControlMessageProxy;
95
96 return exports;
97 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698