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 MOJO_PUBLIC_CPP_APPLICATION_INTERFACE_FACTORY_H_
6#define MOJO_PUBLIC_CPP_APPLICATION_INTERFACE_FACTORY_H_
7
8#include "mojo/public/cpp/bindings/interface_impl.h"
9#include "mojo/public/cpp/bindings/interface_request.h"
10
11namespace mojo {
12
13class ApplicationConnection;
14template <typename Interface> class InterfaceRequest;
15
16// Implement this class to provide implementations of a given interface and
17// bind them to incoming requests. The implementation of this class is
18// responsible for managing the lifetime of the implementations of the
19// interface.
20template <typename Interface>
21class InterfaceFactory {
22 public:
23  virtual ~InterfaceFactory() {}
24  virtual void Create(ApplicationConnection* connection,
25                      InterfaceRequest<Interface> request) = 0;
26};
27
28}  // namespace mojo
29
30#endif  // MOJO_PUBLIC_CPP_APPLICATION_INTERFACE_FACTORY_H_
31