Index: mojo/public/cpp/application/service_provider_impl.h |
diff --git a/mojo/public/cpp/application/service_provider_impl.h b/mojo/public/cpp/application/service_provider_impl.h |
index 45ad7b8456ea8e14c1df5a1fc235ecde2cebea53..a449124f39c1eca1bfb15ad0e5f85ff24472f8dd 100644 |
--- a/mojo/public/cpp/application/service_provider_impl.h |
+++ b/mojo/public/cpp/application/service_provider_impl.h |
@@ -6,57 +6,44 @@ |
#define MOJO_PUBLIC_APPLICATION_SERVICE_PROVIDER_IMPL_H_ |
#include "mojo/public/cpp/application/lib/service_connector.h" |
+#include "mojo/public/cpp/bindings/binding.h" |
#include "mojo/public/interfaces/application/service_provider.mojom.h" |
namespace mojo { |
namespace internal { |
-class WeakServiceProvider; |
class ServiceConnectorBase; |
} |
// Implements a registry that can be used to expose services to another app. |
-class ServiceProviderImpl : public InterfaceImpl<ServiceProvider> { |
+class ServiceProviderImpl : public ServiceProvider { |
public: |
ServiceProviderImpl(); |
+ explicit ServiceProviderImpl(InterfaceRequest<ServiceProvider> request); |
~ServiceProviderImpl() override; |
+ void Bind(InterfaceRequest<ServiceProvider> request); |
+ |
template <typename Interface> |
void AddService(InterfaceFactory<Interface>* factory) { |
AddServiceConnector( |
new internal::InterfaceFactoryConnector<Interface>(factory)); |
} |
- // Returns an instance of a ServiceProvider that weakly wraps this impl's |
- // connection to some other app. Whereas the lifetime of an instance of |
- // ServiceProviderImpl is bound to the lifetime of the pipe it |
- // encapsulates, the lifetime of the ServiceProvider instance returned by this |
- // method is assumed by the caller. After the pipe is closed |
- // ConnectToService() calls on this object will be silently dropped. |
- // This method must only be called once per ServiceProviderImpl. |
- ServiceProvider* CreateRemoteServiceProvider(); |
- |
private: |
typedef std::map<std::string, internal::ServiceConnectorBase*> |
NameToServiceConnectorMap; |
- friend class internal::WeakServiceProvider; |
- |
// Overridden from ServiceProvider: |
void ConnectToService(const String& service_name, |
ScopedMessagePipeHandle client_handle) override; |
- // Overridden from InterfaceImpl: |
- void OnConnectionError() override; |
- |
void AddServiceConnector(internal::ServiceConnectorBase* service_connector); |
void RemoveServiceConnector( |
internal::ServiceConnectorBase* service_connector); |
- void ClearRemote(); |
- |
NameToServiceConnectorMap service_connectors_; |
- internal::WeakServiceProvider* remote_; |
+ Binding<ServiceProvider> binding_; |
MOJO_DISALLOW_COPY_AND_ASSIGN(ServiceProviderImpl); |
}; |