Index: trunk/src/content/common/mojo/service_registry_impl.cc |
=================================================================== |
--- trunk/src/content/common/mojo/service_registry_impl.cc (revision 279559) |
+++ trunk/src/content/common/mojo/service_registry_impl.cc (working copy) |
@@ -1,79 +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. |
- |
-#include "content/common/mojo/service_registry_impl.h" |
- |
-#include "mojo/common/common_type_converters.h" |
- |
-namespace content { |
- |
-ServiceRegistryImpl::ServiceRegistryImpl() : bound_(false) { |
-} |
- |
-ServiceRegistryImpl::ServiceRegistryImpl(mojo::ScopedMessagePipeHandle handle) |
- : bound_(false) { |
- BindRemoteServiceProvider(handle.Pass()); |
-} |
- |
-ServiceRegistryImpl::~ServiceRegistryImpl() { |
- while (!pending_connects_.empty()) { |
- mojo::CloseRaw(pending_connects_.front().second); |
- pending_connects_.pop(); |
- } |
-} |
- |
-void ServiceRegistryImpl::BindRemoteServiceProvider( |
- mojo::ScopedMessagePipeHandle handle) { |
- if (bound_) |
- return; |
- |
- mojo::BindToPipe(this, handle.Pass()); |
- bound_ = true; |
- while (!pending_connects_.empty()) { |
- client()->GetInterface( |
- mojo::String::From(pending_connects_.front().first), |
- mojo::ScopedMessagePipeHandle(pending_connects_.front().second)); |
- pending_connects_.pop(); |
- } |
-} |
- |
-void ServiceRegistryImpl::OnConnectionError() { |
- // TODO(sammc): Support reporting this to our owner. |
- bound_ = false; |
-} |
- |
-void ServiceRegistryImpl::AddService( |
- const std::string& service_name, |
- const base::Callback<void(mojo::ScopedMessagePipeHandle)> service_factory) { |
- service_factories_[service_name] = service_factory; |
-} |
- |
-void ServiceRegistryImpl::RemoveService(const std::string& service_name) { |
- service_factories_.erase(service_name); |
-} |
- |
-void ServiceRegistryImpl::GetRemoteInterface( |
- const base::StringPiece& service_name, |
- mojo::ScopedMessagePipeHandle handle) { |
- if (!bound_) { |
- pending_connects_.push( |
- std::make_pair(service_name.as_string(), handle.release())); |
- return; |
- } |
- client()->GetInterface(mojo::String::From(service_name), handle.Pass()); |
-} |
- |
-void ServiceRegistryImpl::GetInterface( |
- const mojo::String& name, |
- mojo::ScopedMessagePipeHandle client_handle) { |
- std::map<std::string, |
- base::Callback<void(mojo::ScopedMessagePipeHandle)> >::iterator it = |
- service_factories_.find(name); |
- if (it == service_factories_.end()) |
- return; |
- |
- it->second.Run(client_handle.Pass()); |
-} |
- |
-} // namespace content |