summaryrefslogtreecommitdiffstats
path: root/ipc/ipc_channel_win.cc
diff options
context:
space:
mode:
authordmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 20:35:09 +0000
committerdmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 20:35:09 +0000
commit1707726c90f2e3eca0c91e08586130988bd6edfd (patch)
tree8e36a6b66a3004386274f8b9b9d91d9207572588 /ipc/ipc_channel_win.cc
parentc4ca989fc5da9169319c96ecf8549a3bc082981b (diff)
downloadchromium_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.cc24
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.