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 #include "mojo/public/cpp/application/service_provider_impl.h" | 5 #include "mojo/public/cpp/application/service_provider_impl.h" |
6 | 6 |
7 #include "mojo/public/cpp/application/service_connector.h" | 7 #include "mojo/public/cpp/application/service_connector.h" |
8 #include "mojo/public/cpp/environment/logging.h" | 8 #include "mojo/public/cpp/environment/logging.h" |
9 | 9 |
10 namespace mojo { | 10 namespace mojo { |
11 | 11 |
12 ServiceProviderImpl::ServiceProviderImpl() | 12 ServiceProviderImpl::ServiceProviderImpl() |
13 : binding_(this), fallback_service_provider_(nullptr) { | 13 : binding_(this), fallback_service_provider_(nullptr) { |
14 } | 14 } |
15 | 15 |
16 ServiceProviderImpl::ServiceProviderImpl( | 16 ServiceProviderImpl::ServiceProviderImpl( |
17 const ConnectionContext& connection_context, | 17 const ConnectionContext& connection_context, |
18 InterfaceRequest<ServiceProvider> service_provider_request) | 18 InterfaceRequest<ServiceProvider> service_provider_request) |
19 : connection_context_(connection_context), | 19 : binding_(this), fallback_service_provider_(nullptr) { |
20 binding_(this, service_provider_request.Pass()), | 20 if (service_provider_request.is_pending()) |
21 fallback_service_provider_(nullptr) {} | 21 Bind(connection_context, service_provider_request.Pass()); |
| 22 } |
22 | 23 |
23 ServiceProviderImpl::~ServiceProviderImpl() {} | 24 ServiceProviderImpl::~ServiceProviderImpl() {} |
24 | 25 |
25 void ServiceProviderImpl::Bind( | 26 void ServiceProviderImpl::Bind( |
26 const ConnectionContext& connection_context, | 27 const ConnectionContext& connection_context, |
27 InterfaceRequest<ServiceProvider> service_provider_request) { | 28 InterfaceRequest<ServiceProvider> service_provider_request) { |
28 connection_context_ = connection_context; | 29 connection_context_ = connection_context; |
29 binding_.Bind(service_provider_request.Pass()); | 30 binding_.Bind(service_provider_request.Pass()); |
30 } | 31 } |
31 | 32 |
32 void ServiceProviderImpl::Close() { | 33 void ServiceProviderImpl::Close() { |
33 if (binding_.is_bound()) { | 34 if (binding_.is_bound()) { |
34 binding_.Close(); | 35 binding_.Close(); |
35 connection_context_ = ConnectionContext(); | 36 connection_context_ = ConnectionContext(); |
36 } | 37 } |
37 } | 38 } |
38 | 39 |
39 void ServiceProviderImpl::ConnectToService( | 40 void ServiceProviderImpl::ConnectToService( |
40 const String& service_name, | 41 const String& service_name, |
41 ScopedMessagePipeHandle client_handle) { | 42 ScopedMessagePipeHandle client_handle) { |
42 bool service_found = service_connector_registry_.ConnectToService( | 43 bool service_found = service_connector_registry_.ConnectToService( |
43 connection_context_, service_name, &client_handle); | 44 connection_context_, service_name, &client_handle); |
44 if (!service_found && fallback_service_provider_) { | 45 if (!service_found && fallback_service_provider_) { |
45 fallback_service_provider_->ConnectToService(service_name, | 46 fallback_service_provider_->ConnectToService(service_name, |
46 client_handle.Pass()); | 47 client_handle.Pass()); |
47 } | 48 } |
48 } | 49 } |
49 | 50 |
50 } // namespace mojo | 51 } // namespace mojo |
OLD | NEW |