OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ | 5 #ifndef SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ |
6 #define SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ | 6 #define SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 // | 54 // |
55 // TODO(rockot): Clean up the connector/connector_request junk. | 55 // TODO(rockot): Clean up the connector/connector_request junk. |
56 ServiceContext(std::unique_ptr<service_manager::Service> service, | 56 ServiceContext(std::unique_ptr<service_manager::Service> service, |
57 mojom::ServiceRequest request, | 57 mojom::ServiceRequest request, |
58 std::unique_ptr<Connector> connector = nullptr, | 58 std::unique_ptr<Connector> connector = nullptr, |
59 mojom::ConnectorRequest connector_request = nullptr); | 59 mojom::ConnectorRequest connector_request = nullptr); |
60 | 60 |
61 ~ServiceContext() override; | 61 ~ServiceContext() override; |
62 | 62 |
63 Connector* connector() { return connector_.get(); } | 63 Connector* connector() { return connector_.get(); } |
64 const ServiceInfo& local_info() const { return local_info_; } | 64 const Identity& identity() const { return identity_; } |
65 const Identity& identity() const { return local_info_.identity; } | |
66 | 65 |
67 // Specify a closure to be run when the Service calls QuitNow(), typically | 66 // Specify a closure to be run when the Service calls QuitNow(), typically |
68 // in response to Service::OnServiceManagerConnectionLost(). | 67 // in response to Service::OnServiceManagerConnectionLost(). |
69 // | 68 // |
70 // Note that if the Service has already called QuitNow(), |closure| is run | 69 // Note that if the Service has already called QuitNow(), |closure| is run |
71 // immediately from this method. | 70 // immediately from this method. |
72 // | 71 // |
73 // NOTE: It is acceptable for |closure| to delete this ServiceContext. | 72 // NOTE: It is acceptable for |closure| to delete this ServiceContext. |
74 void SetQuitClosure(const base::Closure& closure); | 73 void SetQuitClosure(const base::Closure& closure); |
75 | 74 |
(...skipping 26 matching lines...) Expand all Loading... |
102 // quit closure (see SetQuitClosure() above) if one has been set. | 101 // quit closure (see SetQuitClosure() above) if one has been set. |
103 // | 102 // |
104 // See comments on DisconnectFromServiceManager() regarding abrupt | 103 // See comments on DisconnectFromServiceManager() regarding abrupt |
105 // disconnection from the Service Manager. | 104 // disconnection from the Service Manager. |
106 void QuitNow(); | 105 void QuitNow(); |
107 | 106 |
108 private: | 107 private: |
109 friend class service_manager::Service; | 108 friend class service_manager::Service; |
110 | 109 |
111 // mojom::Service: | 110 // mojom::Service: |
112 void OnStart(const ServiceInfo& info, | 111 void OnStart(const Identity& info, const OnStartCallback& callback) override; |
113 const OnStartCallback& callback) override; | 112 void OnBindInterface(const BindSourceInfo& source_info, |
114 void OnBindInterface( | 113 const std::string& interface_name, |
115 const ServiceInfo& source_info, | 114 mojo::ScopedMessagePipeHandle interface_pipe, |
116 const std::string& interface_name, | 115 const OnBindInterfaceCallback& callback) override; |
117 mojo::ScopedMessagePipeHandle interface_pipe, | |
118 const OnBindInterfaceCallback& callback) override; | |
119 | 116 |
120 void OnConnectionError(); | 117 void OnConnectionError(); |
121 | 118 |
122 // A pending Connector request which will eventually be passed to the Service | 119 // A pending Connector request which will eventually be passed to the Service |
123 // Manager. | 120 // Manager. |
124 mojom::ConnectorRequest pending_connector_request_; | 121 mojom::ConnectorRequest pending_connector_request_; |
125 | 122 |
126 std::unique_ptr<service_manager::Service> service_; | 123 std::unique_ptr<service_manager::Service> service_; |
127 mojo::Binding<mojom::Service> binding_; | 124 mojo::Binding<mojom::Service> binding_; |
128 std::unique_ptr<Connector> connector_; | 125 std::unique_ptr<Connector> connector_; |
129 service_manager::ServiceInfo local_info_; | 126 service_manager::Identity identity_; |
130 | 127 |
131 // This instance's control interface to the service manager. Note that this | 128 // This instance's control interface to the service manager. Note that this |
132 // is unbound and therefore invalid until OnStart() is called. | 129 // is unbound and therefore invalid until OnStart() is called. |
133 mojom::ServiceControlAssociatedPtr service_control_; | 130 mojom::ServiceControlAssociatedPtr service_control_; |
134 | 131 |
135 // The Service may call QuitNow() before SetConnectionLostClosure(), and the | 132 // The Service may call QuitNow() before SetConnectionLostClosure(), and the |
136 // latter is expected to invoke the closure immediately in that case. This is | 133 // latter is expected to invoke the closure immediately in that case. This is |
137 // used to track that condition. | 134 // used to track that condition. |
138 // | 135 // |
139 // TODO(rockot): Figure out who depends on this behavior and make them stop. | 136 // TODO(rockot): Figure out who depends on this behavior and make them stop. |
140 // It's weird and shouldn't be necessary. | 137 // It's weird and shouldn't be necessary. |
141 bool service_quit_ = false; | 138 bool service_quit_ = false; |
142 | 139 |
143 // The closure to run when QuitNow() is invoked. May delete |this|. | 140 // The closure to run when QuitNow() is invoked. May delete |this|. |
144 base::Closure quit_closure_; | 141 base::Closure quit_closure_; |
145 | 142 |
146 base::WeakPtrFactory<ServiceContext> weak_factory_; | 143 base::WeakPtrFactory<ServiceContext> weak_factory_; |
147 | 144 |
148 DISALLOW_COPY_AND_ASSIGN(ServiceContext); | 145 DISALLOW_COPY_AND_ASSIGN(ServiceContext); |
149 }; | 146 }; |
150 | 147 |
151 } // namespace service_manager | 148 } // namespace service_manager |
152 | 149 |
153 #endif // SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ | 150 #endif // SERVICES_SERVICE_MANAGER_PUBLIC_CPP_SERVICE_CONTEXT_H_ |
OLD | NEW |