1 // Copyright 2013 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 #include "mojo/system/proxy_message_pipe_endpoint.h" 6 7 #include <string.h> 8 9 #include "base/logging.h" 10 #include "mojo/system/channel_endpoint.h" 11 #include "mojo/system/local_message_pipe_endpoint.h" 12 #include "mojo/system/message_pipe_dispatcher.h" 13 14 namespace mojo { 15 namespace system { 16 17 ProxyMessagePipeEndpoint::ProxyMessagePipeEndpoint( 18 ChannelEndpoint* channel_endpoint) 19 : channel_endpoint_(channel_endpoint) { 20 } 21 22 ProxyMessagePipeEndpoint::~ProxyMessagePipeEndpoint() { 23 channel_endpoint_->DetachFromMessagePipe(); 24 } 25 26 MessagePipeEndpoint::Type ProxyMessagePipeEndpoint::GetType() const { 27 return kTypeProxy; 28 } 29 30 bool ProxyMessagePipeEndpoint::OnPeerClose() { 31 return false; 32 } 33 34 // Note: We may have to enqueue messages even when our (local) peer isn't open 35 // -- it may have been written to and closed immediately, before we were ready. 36 // This case is handled in |Run()| (which will call us). 37 void ProxyMessagePipeEndpoint::EnqueueMessage( 38 scoped_ptr<MessageInTransit> message) { 39 DCHECK(channel_endpoint_.get()); 40 LOG_IF(WARNING, !channel_endpoint_->EnqueueMessage(message.Pass())) 41 << "Failed to write enqueue message to channel"; 42 } 43 44 } // namespace system 45 } // namespace mojo 46