1 // Copyright 2014 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 IPC_IPC_CHANNEL_FACTORY_H_ 6 #define IPC_IPC_CHANNEL_FACTORY_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/memory/scoped_ptr.h" 12 #include "ipc/ipc_channel.h" 13 14 namespace IPC { 15 16 // Encapsulates how a Channel is created. A ChannelFactory can be 17 // passed to the constructor of ChannelProxy or SyncChannel to tell them 18 // how to create underlying channel. 19 class IPC_EXPORT ChannelFactory { 20 public: 21 // Creates a factory for "native" channel built through 22 // IPC::Channel::Create(). 23 static scoped_ptr<ChannelFactory> Create( 24 const ChannelHandle& handle, Channel::Mode mode); 25 26 virtual ~ChannelFactory() { } 27 virtual std::string GetName() const = 0; 28 virtual scoped_ptr<Channel> BuildChannel(Listener* listener) = 0; 29 }; 30 31 } // namespace IPC 32 33 #endif // IPC_IPC_CHANNEL_FACTORY_H_ 34