OLD | NEW |
(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/pipe_control_message_handler", [ |
| 6 "mojo/public/interfaces/bindings/pipe_control_messages.mojom", |
| 7 "mojo/public/js/codec", |
| 8 "mojo/public/js/interface_types", |
| 9 "mojo/public/js/validator", |
| 10 ], function(pipeControlMessages, codec, types, validator) { |
| 11 |
| 12 var Validator = validator.Validator; |
| 13 |
| 14 function validateControlRequestWithoutResponse(message) { |
| 15 var messageValidator = new Validator(message); |
| 16 var error = messageValidator.validateMessageIsRequestWithoutResponse(); |
| 17 if (error != validator.validationError.NONE) { |
| 18 throw error; |
| 19 } |
| 20 |
| 21 if (message.getName() != pipeControlMessages.kRunOrClosePipeMessageId) { |
| 22 throw new Error("Control message name is not kRunOrClosePipeMessageId"); |
| 23 } |
| 24 |
| 25 // Validate payload. |
| 26 error = pipeControlMessages.RunOrClosePipeMessageParams.validate( |
| 27 messageValidator, message.getHeaderNumBytes()); |
| 28 if (error != validator.validationError.NONE) { |
| 29 throw error; |
| 30 } |
| 31 } |
| 32 |
| 33 function runOrClosePipe(message, delegate) { |
| 34 var reader = new codec.MessageReader(message); |
| 35 var runOrClosePipeMessageParams = reader.decodeStruct( |
| 36 pipeControlMessages.RunOrClosePipeMessageParams); |
| 37 var event = runOrClosePipeMessageParams.input |
| 38 .peer_associated_endpoint_closed_event; |
| 39 return delegate.onPeerAssociatedEndpointClosed(event.id, |
| 40 event.disconnect_reason); |
| 41 } |
| 42 |
| 43 function isPipeControlMessage(message) { |
| 44 return !types.isValidInterfaceId(message.getInterfaceId()); |
| 45 } |
| 46 |
| 47 function PipeControlMessageHandler(delegate) { |
| 48 this.delegate_ = delegate; |
| 49 } |
| 50 |
| 51 PipeControlMessageHandler.prototype.accept = function(message) { |
| 52 validateControlRequestWithoutResponse(message); |
| 53 return runOrClosePipe(message, this.delegate_); |
| 54 }; |
| 55 |
| 56 var exports = {}; |
| 57 exports.PipeControlMessageHandler = PipeControlMessageHandler; |
| 58 exports.isPipeControlMessage = isPipeControlMessage; |
| 59 |
| 60 return exports; |
| 61 }); |
OLD | NEW |