Chromium Code Reviews| Index: ipc/ipc_sync_channel.cc |
| diff --git a/ipc/ipc_sync_channel.cc b/ipc/ipc_sync_channel.cc |
| index 0e0018c7eae74745b91ade4655975278568d57bb..b746c14dded90e6efdfec291b0e3ee5c56a2c6b4 100644 |
| --- a/ipc/ipc_sync_channel.cc |
| +++ b/ipc/ipc_sync_channel.cc |
| @@ -404,19 +404,66 @@ base::WaitableEventWatcher::EventCallback |
| return base::Bind(&SyncChannel::SyncContext::OnWaitableEventSignaled, this); |
| } |
| -SyncChannel::SyncChannel( |
| +// static |
| +scoped_ptr<SyncChannel> SyncChannel::CreateClient( |
| + const IPC::ChannelHandle& channel_handle, |
| + Listener* listener, |
| + base::SingleThreadTaskRunner* ipc_task_runner, |
| + bool create_pipe_now, |
| + base::WaitableEvent* shutdown_event) { |
| + scoped_ptr<SyncChannel> channel = Create( |
| + listener, ipc_task_runner, shutdown_event); |
| + channel->InitClient(channel_handle, create_pipe_now); |
| + return channel.Pass(); |
| +} |
| + |
|
darin (slow to review)
2014/05/29 21:38:09
nit: only one new line
|
| + |
| +// static |
| +scoped_ptr<SyncChannel> SyncChannel::CreateServer( |
| const IPC::ChannelHandle& channel_handle, |
| - Channel::Mode mode, |
| Listener* listener, |
| base::SingleThreadTaskRunner* ipc_task_runner, |
| bool create_pipe_now, |
| - WaitableEvent* shutdown_event) |
| - : ChannelProxy(new SyncContext(listener, ipc_task_runner, shutdown_event)) { |
| - // The current (listener) thread must be distinct from the IPC thread, or else |
| - // sending synchronous messages will deadlock. |
| - DCHECK_NE(ipc_task_runner, base::ThreadTaskRunnerHandle::Get()); |
| - ChannelProxy::Init(channel_handle, mode, create_pipe_now); |
| - StartWatching(); |
| + base::WaitableEvent* shutdown_event) { |
| + scoped_ptr<SyncChannel> channel = Create( |
| + listener, ipc_task_runner, shutdown_event); |
| + channel->InitServer(channel_handle, create_pipe_now); |
| + return channel.Pass(); |
| +} |
| + |
| +// static |
| +scoped_ptr<SyncChannel> SyncChannel::CreateNamedClient( |
| + const IPC::ChannelHandle& channel_handle, |
| + Listener* listener, |
| + base::SingleThreadTaskRunner* ipc_task_runner, |
| + bool create_pipe_now, |
| + base::WaitableEvent* shutdown_event) { |
| + scoped_ptr<SyncChannel> channel = Create( |
| + listener, ipc_task_runner, shutdown_event); |
| + channel->InitNamedClient(channel_handle, create_pipe_now); |
| + return channel.Pass(); |
| +} |
| + |
| +// static |
| +scoped_ptr<SyncChannel> SyncChannel::CreateNamedServer( |
| + const IPC::ChannelHandle& channel_handle, |
| + Listener* listener, |
| + base::SingleThreadTaskRunner* ipc_task_runner, |
| + bool create_pipe_now, |
| + base::WaitableEvent* shutdown_event) { |
| + scoped_ptr<SyncChannel> channel = Create( |
| + listener, ipc_task_runner, shutdown_event); |
| + channel->InitNamedServer(channel_handle, create_pipe_now); |
| + return channel.Pass(); |
| +} |
| + |
| +// static |
| +scoped_ptr<SyncChannel> SyncChannel::Create( |
| + Listener* listener, |
| + base::SingleThreadTaskRunner* ipc_task_runner, |
| + WaitableEvent* shutdown_event) { |
| + return make_scoped_ptr(new SyncChannel( |
| + listener, ipc_task_runner, shutdown_event)); |
| } |
| SyncChannel::SyncChannel( |