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 (function() { 6 var internal = mojo.internal; 7 8 function constructRunOrClosePipeMessage(runOrClosePipeInput) { 9 var runOrClosePipeMessageParams = new 10 mojo.pipeControl.RunOrClosePipeMessageParams(); 11 runOrClosePipeMessageParams.input = runOrClosePipeInput; 12 13 var messageName = mojo.pipeControl.kRunOrClosePipeMessageId; 14 var payloadSize = 15 mojo.pipeControl.RunOrClosePipeMessageParams.encodedSize; 16 17 var builder = new internal.MessageV0Builder(messageName, payloadSize); 18 builder.encodeStruct(mojo.pipeControl.RunOrClosePipeMessageParams, 19 runOrClosePipeMessageParams); 20 var message = builder.finish(); 21 message.setInterfaceId(internal.kInvalidInterfaceId); 22 return message; 23 } 24 25 function PipeControlMessageProxy(receiver) { 26 this.receiver_ = receiver; 27 } 28 29 PipeControlMessageProxy.prototype.notifyPeerEndpointClosed = function( 30 interfaceId, reason) { 31 var message = this.constructPeerEndpointClosedMessage(interfaceId, reason); 32 this.receiver_.accept(message); 33 }; 34 35 PipeControlMessageProxy.prototype.constructPeerEndpointClosedMessage = 36 function(interfaceId, reason) { 37 var event = new mojo.pipeControl.PeerAssociatedEndpointClosedEvent(); 38 event.id = interfaceId; 39 if (reason) { 40 event.disconnectReason = new mojo.pipeControl.DisconnectReason({ 41 customReason: reason.customReason, 42 description: reason.description}); 43 } 44 var runOrClosePipeInput = new mojo.pipeControl.RunOrClosePipeInput(); 45 runOrClosePipeInput.peerAssociatedEndpointClosedEvent = event; 46 return constructRunOrClosePipeMessage(runOrClosePipeInput); 47 }; 48 49 internal.PipeControlMessageProxy = PipeControlMessageProxy; 50 })(); 51