diff options
author | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 20:35:09 +0000 |
---|---|---|
committer | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 20:35:09 +0000 |
commit | 1707726c90f2e3eca0c91e08586130988bd6edfd (patch) | |
tree | 8e36a6b66a3004386274f8b9b9d91d9207572588 /ipc/ipc_channel_win.cc | |
parent | c4ca989fc5da9169319c96ecf8549a3bc082981b (diff) | |
download | chromium_src-1707726c90f2e3eca0c91e08586130988bd6edfd.zip chromium_src-1707726c90f2e3eca0c91e08586130988bd6edfd.tar.gz chromium_src-1707726c90f2e3eca0c91e08586130988bd6edfd.tar.bz2 |
Clean up channel modes
Makes channel modes flags instead of a straight enum allowing us to check
properties directly.
BUG=none
TEST=BUILD
Review URL: http://codereview.chromium.org/6334061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73658 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc/ipc_channel_win.cc')
-rw-r--r-- | ipc/ipc_channel_win.cc | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/ipc/ipc_channel_win.cc b/ipc/ipc_channel_win.cc index 717cb04..9182200 100644 --- a/ipc/ipc_channel_win.cc +++ b/ipc/ipc_channel_win.cc @@ -103,25 +103,9 @@ Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle &channel_handle, ALLOW_THIS_IN_INITIALIZER_LIST(output_state_(this)), pipe_(INVALID_HANDLE_VALUE), listener_(listener), - waiting_connect_(mode == MODE_SERVER || mode == MODE_NAMED_SERVER), + waiting_connect_(mode & MODE_SERVER_FLAG), processing_incoming_(false), ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) { - switch(mode) { - case MODE_NONE: - LOG(FATAL) << "Bad mode for " << channel_handle.name; - break; - case MODE_SERVER: - case MODE_CLIENT: - break; - case MODE_NAMED_SERVER: - mode = MODE_SERVER; - break; - case MODE_NAMED_CLIENT: - mode = MODE_CLIENT; - break; - // Intentionally no default case here so that the compiler - // will check that we handle all the cases in the enum. - } if (!CreatePipe(channel_handle, mode)) { // The pipe may have been closed already. LOG(WARNING) << "Unable to create pipe named \"" << channel_handle.name << @@ -195,7 +179,7 @@ bool Channel::ChannelImpl::CreatePipe(const IPC::ChannelHandle &channel_handle, Mode mode) { DCHECK(pipe_ == INVALID_HANDLE_VALUE); const std::wstring pipe_name = PipeName(channel_handle.name); - if (mode == MODE_SERVER) { + if (mode & MODE_SERVER_FLAG) { SECURITY_ATTRIBUTES security_attributes = {0}; security_attributes.bInheritHandle = FALSE; security_attributes.nLength = sizeof(SECURITY_ATTRIBUTES); @@ -217,7 +201,7 @@ bool Channel::ChannelImpl::CreatePipe(const IPC::ChannelHandle &channel_handle, 5000, // timeout in milliseconds (XXX tune) &security_attributes); LocalFree(security_attributes.lpSecurityDescriptor); - } else { + } else if (mode & MODE_CLIENT_FLAG) { pipe_ = CreateFileW(pipe_name.c_str(), GENERIC_READ | GENERIC_WRITE, 0, @@ -226,6 +210,8 @@ bool Channel::ChannelImpl::CreatePipe(const IPC::ChannelHandle &channel_handle, SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION | FILE_FLAG_OVERLAPPED, NULL); + } else { + NOTREACHED(); } if (pipe_ == INVALID_HANDLE_VALUE) { // If this process is being closed, the pipe may be gone already. |