1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef IPC_IPC_CHANNEL_FACTORY_H_ 6*6777b538SAndroid Build Coastguard Worker #define IPC_IPC_CHANNEL_FACTORY_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <memory> 9*6777b538SAndroid Build Coastguard Worker #include <string> 10*6777b538SAndroid Build Coastguard Worker #include <vector> 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker #include "base/component_export.h" 13*6777b538SAndroid Build Coastguard Worker #include "base/memory/ref_counted.h" 14*6777b538SAndroid Build Coastguard Worker #include "base/task/single_thread_task_runner.h" 15*6777b538SAndroid Build Coastguard Worker #include "ipc/ipc_channel.h" 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker namespace IPC { 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker // Encapsulates how a Channel is created. A ChannelFactory can be 20*6777b538SAndroid Build Coastguard Worker // passed to the constructor of ChannelProxy or SyncChannel to tell them 21*6777b538SAndroid Build Coastguard Worker // how to create underlying channel. COMPONENT_EXPORT(IPC)22*6777b538SAndroid Build Coastguard Workerclass COMPONENT_EXPORT(IPC) ChannelFactory { 23*6777b538SAndroid Build Coastguard Worker public: 24*6777b538SAndroid Build Coastguard Worker // Creates a factory for "native" channel built through 25*6777b538SAndroid Build Coastguard Worker // IPC::Channel::Create(). 26*6777b538SAndroid Build Coastguard Worker static std::unique_ptr<ChannelFactory> Create( 27*6777b538SAndroid Build Coastguard Worker const ChannelHandle& handle, 28*6777b538SAndroid Build Coastguard Worker Channel::Mode mode, 29*6777b538SAndroid Build Coastguard Worker const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner); 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker virtual ~ChannelFactory() { } 32*6777b538SAndroid Build Coastguard Worker virtual std::unique_ptr<Channel> BuildChannel(Listener* listener) = 0; 33*6777b538SAndroid Build Coastguard Worker virtual scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() = 0; 34*6777b538SAndroid Build Coastguard Worker }; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker } // namespace IPC 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker #endif // IPC_IPC_CHANNEL_FACTORY_H_ 39