OLD | NEW |
(Empty) | |
| 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_WITH_CONTEXT_H_ |
| 6 #define MOJO_PUBLIC_CPP_APPLICATION_INTERFACE_FACTORY_WITH_CONTEXT_H_ |
| 7 |
| 8 #include "mojo/public/cpp/application/interface_factory.h" |
| 9 |
| 10 namespace mojo { |
| 11 |
| 12 // Use this class to allocate and bind instances of Impl constructed with a |
| 13 // context parameter to interface requests. The lifetime of the constructed |
| 14 // Impls is bound to the pipe. |
| 15 template <typename Impl, |
| 16 typename Context, |
| 17 typename Interface = typename Impl::ImplementedInterface> |
| 18 class InterfaceFactoryWithContext : public InterfaceFactory<Interface> { |
| 19 public: |
| 20 explicit InterfaceFactoryWithContext(Context* context) : context_(context) {} |
| 21 virtual ~InterfaceFactoryWithContext() {} |
| 22 |
| 23 virtual void Create(ApplicationConnection* connection, |
| 24 InterfaceRequest<Interface> request) MOJO_OVERRIDE { |
| 25 BindToRequest(new Impl(context_), &request); |
| 26 } |
| 27 |
| 28 private: |
| 29 Context* context_; |
| 30 }; |
| 31 |
| 32 } // namespace mojo |
| 33 |
| 34 #endif // MOJO_PUBLIC_CPP_APPLICATION_INTERFACE_FACTORY_WITH_CONTEXT_H_ |
OLD | NEW |