Index: third_party/mojo/src/mojo/edk/system/channel_manager.cc |
diff --git a/third_party/mojo/src/mojo/edk/system/channel_manager.cc b/third_party/mojo/src/mojo/edk/system/channel_manager.cc |
index c2fe8a5ceda15119968932bfee000707c3818910..4e58f89abe0ce64b9df3dc2883b18195f350f1d0 100644 |
--- a/third_party/mojo/src/mojo/edk/system/channel_manager.cc |
+++ b/third_party/mojo/src/mojo/edk/system/channel_manager.cc |
@@ -5,10 +5,8 @@ |
#include "mojo/edk/system/channel_manager.h" |
#include "base/bind.h" |
-#include "base/bind_helpers.h" |
#include "base/location.h" |
#include "base/message_loop/message_loop_proxy.h" |
-#include "base/task_runner.h" |
namespace mojo { |
namespace system { |
@@ -28,8 +26,7 @@ void ShutdownChannelHelper(const ChannelInfo& channel_info) { |
} // namespace |
-ChannelManager::ChannelManager(embedder::PlatformSupport* platform_support) |
- : platform_support_(platform_support) { |
+ChannelManager::ChannelManager() { |
} |
ChannelManager::~ChannelManager() { |
@@ -38,57 +35,24 @@ ChannelManager::~ChannelManager() { |
ShutdownChannelHelper(map_elem.second); |
} |
-void ChannelManager::CreateChannelOnIOThread( |
- ChannelId channel_id, |
- embedder::ScopedPlatformHandle platform_handle, |
- scoped_refptr<system::ChannelEndpoint> bootstrap_channel_endpoint) { |
- DCHECK_NE(channel_id, kInvalidChannelId); |
- DCHECK(platform_handle.is_valid()); |
- DCHECK(bootstrap_channel_endpoint); |
- |
- // Create and initialize a |system::Channel|. |
- scoped_refptr<system::Channel> channel = |
- new system::Channel(platform_support_); |
- channel->Init(system::RawChannel::Create(platform_handle.Pass())); |
- channel->SetBootstrapEndpoint(bootstrap_channel_endpoint); |
+ChannelId ChannelManager::AddChannel( |
+ scoped_refptr<Channel> channel, |
+ scoped_refptr<base::TaskRunner> channel_thread_task_runner) { |
+ ChannelId channel_id = GetChannelId(channel.get()); |
{ |
base::AutoLock locker(lock_); |
- CHECK(channel_infos_.find(channel_id) == channel_infos_.end()); |
+ DCHECK(channel_infos_.find(channel_id) == channel_infos_.end()); |
channel_infos_[channel_id] = |
- ChannelInfo(channel, base::MessageLoopProxy::current()); |
+ ChannelInfo(channel, channel_thread_task_runner); |
} |
channel->SetChannelManager(this); |
-} |
- |
-void ChannelManager::CreateChannel( |
- ChannelId channel_id, |
- embedder::ScopedPlatformHandle platform_handle, |
- scoped_refptr<system::ChannelEndpoint> bootstrap_channel_endpoint, |
- scoped_refptr<base::TaskRunner> io_thread_task_runner, |
- base::Closure callback, |
- scoped_refptr<base::TaskRunner> callback_thread_task_runner) { |
- DCHECK(io_thread_task_runner); |
- DCHECK(!callback.is_null()); |
- // (|callback_thread_task_runner| may be null.) |
- io_thread_task_runner->PostTask( |
- FROM_HERE, |
- base::Bind(&ChannelManager::CreateChannelHelper, base::Unretained(this), |
- channel_id, base::Passed(&platform_handle), |
- bootstrap_channel_endpoint, callback, |
- callback_thread_task_runner)); |
-} |
- |
-scoped_refptr<Channel> ChannelManager::GetChannel(ChannelId channel_id) const { |
- base::AutoLock locker(lock_); |
- auto it = channel_infos_.find(channel_id); |
- DCHECK(it != channel_infos_.end()); |
- return it->second.channel; |
+ return channel_id; |
} |
void ChannelManager::WillShutdownChannel(ChannelId channel_id) { |
- GetChannel(channel_id)->WillShutdownSoon(); |
+ GetChannelInfo(channel_id).channel->WillShutdownSoon(); |
} |
void ChannelManager::ShutdownChannel(ChannelId channel_id) { |
@@ -103,18 +67,11 @@ void ChannelManager::ShutdownChannel(ChannelId channel_id) { |
ShutdownChannelHelper(channel_info); |
} |
-void ChannelManager::CreateChannelHelper( |
- ChannelId channel_id, |
- embedder::ScopedPlatformHandle platform_handle, |
- scoped_refptr<system::ChannelEndpoint> bootstrap_channel_endpoint, |
- base::Closure callback, |
- scoped_refptr<base::TaskRunner> callback_thread_task_runner) { |
- CreateChannelOnIOThread(channel_id, platform_handle.Pass(), |
- bootstrap_channel_endpoint); |
- if (callback_thread_task_runner) |
- callback_thread_task_runner->PostTask(FROM_HERE, callback); |
- else |
- callback.Run(); |
+ChannelInfo ChannelManager::GetChannelInfo(ChannelId channel_id) { |
+ base::AutoLock locker(lock_); |
+ auto it = channel_infos_.find(channel_id); |
+ DCHECK(it != channel_infos_.end()); |
+ return it->second; |
} |
} // namespace system |