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 11 namespace mojo { 12 13 class ApplicationConnection; 14 template <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. 20 template <typename Interface> 21 class InterfaceFactory { 22 public: ~InterfaceFactory()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