Home | History | Annotate | Download | only in ipc
      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