namespace system {
class Channel;
+class MessagePipe;
// A |ProxyMessagePipeEndpoint| connects an end of a |MessagePipe| to a
// |Channel|, over which it transmits and receives data (to/from another
// |MessagePipeEndpoint| implementation:
virtual void Close() OVERRIDE;
virtual void OnPeerClose() OVERRIDE;
- virtual MojoResult CanEnqueueMessage(
- const MessageInTransit* message,
- const std::vector<Dispatcher*>* dispatchers) OVERRIDE;
- virtual void EnqueueMessage(
+ virtual MojoResult EnqueueMessage(
MessageInTransit* message,
- std::vector<scoped_refptr<Dispatcher> >* dispatchers) OVERRIDE;
+ std::vector<DispatcherTransport>* transports) OVERRIDE;
virtual void Attach(scoped_refptr<Channel> channel,
MessageInTransit::EndpointId local_id) OVERRIDE;
virtual void Run(MessageInTransit::EndpointId remote_id) OVERRIDE;
return remote_id_ != MessageInTransit::kInvalidEndpointId;
}
+ // "Attaches" |transports| (which must be non-null and nonempty) to |message|
+ // by "serializing" them in an appropriate way, and closes each dispatcher.
+ void AttachAndCloseDispatchers(MessageInTransit* message,
+ std::vector<DispatcherTransport>* transports);
+ void EnqueueMessageInternal(MessageInTransit* message);
+
#ifdef NDEBUG
void AssertConsistentState() const {}
#else