Chromium Code Reviews| Index: content/common/mojo/service_registry_impl.h |
| diff --git a/content/common/mojo/service_registry_impl.h b/content/common/mojo/service_registry_impl.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..21471cdf12c8451ba6c5831f5617924cfa96d647 |
| --- /dev/null |
| +++ b/content/common/mojo/service_registry_impl.h |
| @@ -0,0 +1,60 @@ |
| +// 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 CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ |
| +#define CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ |
| + |
| +#include <map> |
| +#include <queue> |
| +#include <string> |
| +#include <utility> |
| + |
| +#include "base/callback.h" |
| +#include "content/public/common/service_registry.h" |
| +#include "mojo/public/cpp/bindings/interface_impl.h" |
| +#include "mojo/public/cpp/system/core.h" |
| +#include "mojo/public/interfaces/interface_provider/interface_provider.mojom.h" |
| + |
| +namespace content { |
| + |
| +class ServiceRegistryImpl |
| + : public ServiceRegistry, |
| + public mojo::InterfaceImpl<mojo::IInterfaceProvider> { |
| + public: |
| + ServiceRegistryImpl(); |
| + explicit ServiceRegistryImpl(mojo::ScopedMessagePipeHandle handle); |
| + virtual ~ServiceRegistryImpl(); |
| + |
| + // Binds to a remote ServiceProvider. This will expose added services to the |
| + // remote ServiceProvider with the corresponding handle and enable |
| + // GetInterface to provide access to services exposed by the remote |
| + // ServiceProvider. |
| + void Bind(mojo::ScopedMessagePipeHandle handle); |
|
darin (slow to review)
2014/06/18 00:09:28
nit: You might call this method BindRemoteServiceP
Sam McNally
2014/06/18 01:31:40
Done.
|
| + |
| + // ServiceRegistry overrides. |
| + virtual void AddService( |
| + const std::string& service_name, |
| + const base::Callback<void(mojo::ScopedMessagePipeHandle)> service_factory) |
| + OVERRIDE; |
| + virtual void RemoveService(const std::string& service_name) OVERRIDE; |
| + virtual void GetInterface(const base::StringPiece& service_name, |
| + mojo::ScopedMessagePipeHandle handle) OVERRIDE; |
| + |
| + private: |
| + // mojo::InterfaceImpl<mojo::IInterfaceProvider> overrides. |
| + virtual void GetInterface( |
| + const mojo::String& name, |
| + mojo::ScopedMessagePipeHandle client_handle) OVERRIDE; |
| + virtual void OnConnectionError() OVERRIDE; |
| + |
| + std::map<std::string, base::Callback<void(mojo::ScopedMessagePipeHandle)> > |
| + service_factories_; |
| + std::queue<std::pair<std::string, mojo::MessagePipeHandle> > |
| + pending_connects_; |
| + bool bound_; |
| +}; |
| + |
| +} // namespace content |
| + |
| +#endif // CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ |