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#include "ipc/ipc_channel_factory.h"
6
7namespace IPC {
8
9namespace {
10
11class PlatformChannelFactory : public ChannelFactory {
12 public:
13  PlatformChannelFactory(ChannelHandle handle,
14                         Channel::Mode mode)
15      : handle_(handle), mode_(mode) {
16  }
17
18  virtual std::string GetName() const OVERRIDE {
19    return handle_.name;
20  }
21
22  virtual scoped_ptr<Channel> BuildChannel(
23      Listener* listener) OVERRIDE {
24    return Channel::Create(handle_, mode_, listener);
25  }
26
27 private:
28  ChannelHandle handle_;
29  Channel::Mode mode_;
30
31  DISALLOW_COPY_AND_ASSIGN(PlatformChannelFactory);
32};
33
34} // namespace
35
36// static
37scoped_ptr<ChannelFactory> ChannelFactory::Create(
38    const ChannelHandle& handle, Channel::Mode mode) {
39  return scoped_ptr<ChannelFactory>(new PlatformChannelFactory(handle, mode));
40}
41
42}  // namespace IPC
43