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 CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ | |
6 #define CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ | |
7 | |
8 #include <map> | |
9 #include <queue> | |
10 #include <string> | |
11 #include <utility> | |
12 | |
13 #include "base/callback.h" | |
14 #include "content/public/common/service_registry.h" | |
15 #include "mojo/public/cpp/bindings/interface_impl.h" | |
16 #include "mojo/public/cpp/system/core.h" | |
17 #include "mojo/public/interfaces/interface_provider/interface_provider.mojom.h" | |
18 | |
19 namespace content { | |
20 | |
21 class ServiceRegistryImpl | |
22 : public ServiceRegistry, | |
23 public mojo::InterfaceImpl<mojo::IInterfaceProvider> { | |
24 public: | |
25 ServiceRegistryImpl(); | |
26 explicit ServiceRegistryImpl(mojo::ScopedMessagePipeHandle handle); | |
27 virtual ~ServiceRegistryImpl(); | |
28 | |
29 // Binds to a remote ServiceProvider. This will expose added services to the | |
30 // remote ServiceProvider with the corresponding handle and enable | |
31 // GetInterface to provide access to services exposed by the remote | |
32 // ServiceProvider. | |
33 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.
| |
34 | |
35 // ServiceRegistry overrides. | |
36 virtual void AddService( | |
37 const std::string& service_name, | |
38 const base::Callback<void(mojo::ScopedMessagePipeHandle)> service_factory) | |
39 OVERRIDE; | |
40 virtual void RemoveService(const std::string& service_name) OVERRIDE; | |
41 virtual void GetInterface(const base::StringPiece& service_name, | |
42 mojo::ScopedMessagePipeHandle handle) OVERRIDE; | |
43 | |
44 private: | |
45 // mojo::InterfaceImpl<mojo::IInterfaceProvider> overrides. | |
46 virtual void GetInterface( | |
47 const mojo::String& name, | |
48 mojo::ScopedMessagePipeHandle client_handle) OVERRIDE; | |
49 virtual void OnConnectionError() OVERRIDE; | |
50 | |
51 std::map<std::string, base::Callback<void(mojo::ScopedMessagePipeHandle)> > | |
52 service_factories_; | |
53 std::queue<std::pair<std::string, mojo::MessagePipeHandle> > | |
54 pending_connects_; | |
55 bool bound_; | |
56 }; | |
57 | |
58 } // namespace content | |
59 | |
60 #endif // CONTENT_COMMON_MOJO_SERVICE_REGISTRY_IMPL_H_ | |
OLD | NEW |