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 #ifndef MOJO_SYSTEM_PROXY_MESSAGE_PIPE_ENDPOINT_H_ 6 #define MOJO_SYSTEM_PROXY_MESSAGE_PIPE_ENDPOINT_H_ 7 8 #include "base/macros.h" 9 #include "base/memory/ref_counted.h" 10 #include "mojo/system/message_in_transit.h" 11 #include "mojo/system/message_pipe_endpoint.h" 12 #include "mojo/system/system_impl_export.h" 13 14 namespace mojo { 15 namespace system { 16 17 class ChannelEndpoint; 18 class LocalMessagePipeEndpoint; 19 class MessagePipe; 20 21 // A |ProxyMessagePipeEndpoint| is an endpoint which delegates everything to a 22 // |ChannelEndpoint|, which may be co-owned by a |Channel|. Like any 23 // |MessagePipeEndpoint|, a |ProxyMessagePipeEndpoint| is owned by a 24 // |MessagePipe|. 25 // 26 // For example, a |MessagePipe| with one endpoint local and the other endpoint 27 // remote consists of a |LocalMessagePipeEndpoint| and a 28 // |ProxyMessagePipeEndpoint|, with only the local endpoint being accessible via 29 // a |MessagePipeDispatcher|. 30 class MOJO_SYSTEM_IMPL_EXPORT ProxyMessagePipeEndpoint 31 : public MessagePipeEndpoint { 32 public: 33 explicit ProxyMessagePipeEndpoint(ChannelEndpoint* channel_endpoint); 34 virtual ~ProxyMessagePipeEndpoint(); 35 36 // |MessagePipeEndpoint| implementation: 37 virtual Type GetType() const OVERRIDE; 38 virtual bool OnPeerClose() OVERRIDE; 39 virtual void EnqueueMessage(scoped_ptr<MessageInTransit> message) OVERRIDE; 40 41 private: 42 scoped_refptr<ChannelEndpoint> channel_endpoint_; 43 44 DISALLOW_COPY_AND_ASSIGN(ProxyMessagePipeEndpoint); 45 }; 46 47 } // namespace system 48 } // namespace mojo 49 50 #endif // MOJO_SYSTEM_PROXY_MESSAGE_PIPE_ENDPOINT_H_ 51