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 |
deleted file mode 100644 |
index a44d0366cc6a652194cc98e89a06f9d0a8332677..0000000000000000000000000000000000000000 |
--- a/mojo/public/cpp/application/service_provider_impl.h |
+++ /dev/null |
@@ -1,152 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef MOJO_PUBLIC_APPLICATION_SERVICE_PROVIDER_IMPL_H_ |
-#define MOJO_PUBLIC_APPLICATION_SERVICE_PROVIDER_IMPL_H_ |
- |
-#include <functional> |
-#include <map> |
-#include <string> |
-#include <utility> |
- |
-#include "mojo/public/cpp/application/connection_context.h" |
-#include "mojo/public/cpp/application/service_connector.h" |
-#include "mojo/public/cpp/bindings/binding.h" |
-#include "mojo/public/interfaces/application/service_provider.mojom.h" |
- |
-namespace mojo { |
- |
-// An implementation of |ServiceProvider|, which can be customized appropriately |
-// (to select what services it provides). |
-class ServiceProviderImpl : public ServiceProvider { |
- public: |
- // A |InterfaceRequestHandler<Interface>| is simply a function that handles an |
- // interface request for |Interface|. If it determines (e.g., based on the |
- // given |ConnectionContext|) that the request should be "accepted", then it |
- // should "connect" ("take ownership of") request. Otherwise, it can simply |
- // drop |interface_request| (as implied by the interface). |
- template <typename Interface> |
- using InterfaceRequestHandler = |
- std::function<void(const ConnectionContext& connection_context, |
- InterfaceRequest<Interface> interface_request)>; |
- |
- // Constructs this service provider implementation in an unbound state. |
- ServiceProviderImpl(); |
- |
- // Constructs this service provider implementation, binding it to the given |
- // interface request. Note: If |service_provider_request| is not valid |
- // ("pending"), then the object will be put into an unbound state. |
- explicit ServiceProviderImpl( |
- const ConnectionContext& connection_context, |
- InterfaceRequest<ServiceProvider> service_provider_request); |
- |
- ~ServiceProviderImpl() override; |
- |
- // Binds this service provider implementation to the given interface request. |
- // This may only be called if this object is unbound. |
- void Bind(const ConnectionContext& connection_context, |
- InterfaceRequest<ServiceProvider> service_provider_request); |
- |
- // Disconnect this service provider implementation and put it in a state where |
- // it can be rebound to a new request (i.e., restores this object to an |
- // unbound state). This may be called even if this object is already unbound. |
- void Close(); |
- |
- // Adds a supported service with the given |service_name|, using the given |
- // |service_connector|. |
- void AddServiceForName(std::unique_ptr<ServiceConnector> service_connector, |
- const std::string& service_name); |
- |
- // Adds a supported service with the given |service_name|, using the given |
- // |interface_request_handler| (see above for information about |
- // |InterfaceRequestHandler<Interface>|). |interface_request_handler| should |
- // remain valid for the lifetime of this object. |
- // |
- // A typical usage may be: |
- // |
- // service_provider_impl_->AddService<Foobar>( |
- // [](const ConnectionContext& connection_context, |
- // InterfaceRequest<FooBar> foobar_request) { |
- // // |FoobarImpl| owns itself. |
- // new FoobarImpl(std::move(foobar_request)); |
- // }); |
- template <typename Interface> |
- void AddService(InterfaceRequestHandler<Interface> interface_request_handler, |
- const std::string& service_name = Interface::Name_) { |
- AddServiceForName( |
- std::unique_ptr<ServiceConnector>(new ServiceConnectorImpl<Interface>( |
- std::move(interface_request_handler))), |
- service_name); |
- } |
- |
- // Removes support for the service with the given |service_name|. |
- void RemoveServiceForName(const std::string& service_name); |
- |
- // Like |RemoveServiceForName()| (above), but designed so that it can be used |
- // like |RemoveService<Interface>()| or even |
- // |RemoveService<Interface>(service_name)| (to parallel |
- // |AddService<Interface>()|). |
- template <typename Interface> |
- void RemoveService(const std::string& service_name = Interface::Name_) { |
- RemoveServiceForName(service_name); |
- } |
- |
- // This uses the provided |fallback_service_provider| for connection requests |
- // for services that are not known (haven't been added). (Set it to null to |
- // not have any fallback.) A fallback must outlive this object (or until it is |
- // "cleared" or replaced by a different fallback. |
- void set_fallback_service_provider( |
- ServiceProvider* fallback_service_provider) { |
- fallback_service_provider_ = fallback_service_provider; |
- } |
- |
- // Gets the context for the connection that this object is bound to (if not |
- // bound, the context is just a default-initialized |ConnectionContext|). |
- const ConnectionContext& connection_context() const { |
- return connection_context_; |
- } |
- |
- private: |
- // Objects of this class are used to adapt a generic (untyped) connection |
- // request (i.e., |ServiceConnector::ConnectToService()|) to the type-safe |
- // |InterfaceRequestHandler<Interface>|. |
- template <typename Interface> |
- class ServiceConnectorImpl : public ServiceConnector { |
- public: |
- explicit ServiceConnectorImpl( |
- InterfaceRequestHandler<Interface> interface_request_handler) |
- : interface_request_handler_(std::move(interface_request_handler)) {} |
- ~ServiceConnectorImpl() override {} |
- |
- void ConnectToService(const mojo::ConnectionContext& connection_context, |
- ScopedMessagePipeHandle client_handle) override { |
- interface_request_handler_( |
- connection_context, |
- InterfaceRequest<Interface>(client_handle.Pass())); |
- } |
- |
- private: |
- const InterfaceRequestHandler<Interface> interface_request_handler_; |
- |
- MOJO_DISALLOW_COPY_AND_ASSIGN(ServiceConnectorImpl); |
- }; |
- |
- // Overridden from |ServiceProvider|: |
- void ConnectToService(const String& service_name, |
- ScopedMessagePipeHandle client_handle) override; |
- |
- ConnectionContext connection_context_; |
- Binding<ServiceProvider> binding_; |
- |
- std::map<std::string, std::unique_ptr<ServiceConnector>> |
- name_to_service_connector_; |
- |
- ServiceProvider* fallback_service_provider_; |
- |
- MOJO_DISALLOW_COPY_AND_ASSIGN(ServiceProviderImpl); |
-}; |
- |
-} // namespace mojo |
- |
-#endif // MOJO_PUBLIC_APPLICATION_SERVICE_PROVIDER_IMPL_H_ |