diff options
author | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-12 19:09:47 +0000 |
---|---|---|
committer | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-12 19:09:47 +0000 |
commit | eb8c76326fb39a429dc8bda38da22a86bb6802b3 (patch) | |
tree | 2155abfd972894d6ca5bfdf11a8fed37da065d4c /chrome/common/ipc_channel_posix.h | |
parent | b3d64d5c0d00415968935942b00d37704cd7507c (diff) | |
download | chromium_src-eb8c76326fb39a429dc8bda38da22a86bb6802b3.zip chromium_src-eb8c76326fb39a429dc8bda38da22a86bb6802b3.tar.gz chromium_src-eb8c76326fb39a429dc8bda38da22a86bb6802b3.tar.bz2 |
message_pump_libevent refactor:
* Unify WatchSocket & WatchFileHandle.
* Better encapsulate libevent.
* Fix a bug with blocking writes in ipc_posix.cc
Review URL: http://codereview.chromium.org/13757
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6911 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/ipc_channel_posix.h')
-rw-r--r-- | chrome/common/ipc_channel_posix.h | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/chrome/common/ipc_channel_posix.h b/chrome/common/ipc_channel_posix.h index b2849dc..9b34494 100644 --- a/chrome/common/ipc_channel_posix.h +++ b/chrome/common/ipc_channel_posix.h @@ -11,11 +11,10 @@ #include <string> #include "base/message_loop.h" -#include "third_party/libevent/event.h" namespace IPC { -class Channel::ChannelImpl : public MessageLoopForIO::FileWatcher { +class Channel::ChannelImpl : public MessageLoopForIO::Watcher { public: // Mirror methods of Channel, see ipc_channel.h for description. ChannelImpl(const std::wstring& channel_id, Mode mode, Listener* listener); @@ -31,27 +30,19 @@ class Channel::ChannelImpl : public MessageLoopForIO::FileWatcher { bool ProcessIncomingMessages(); bool ProcessOutgoingMessages(); - void OnFileReadReady(int fd); - void OnFileWriteReady(int fd); + void OnFileCanReadWithoutBlocking(int fd); + void OnFileCanWriteWithoutBlocking(int fd); Mode mode_; - // Wrapper for Libevent event. - // TODO(playmobil): MessageLoopForIO needs to better encapsulate libevent. - struct EventHolder { - EventHolder() : is_active(false) {} - ~EventHolder() {} + // After accepting one client connection on our server socket we want to + // stop listening. + MessageLoopForIO::FileDescriptorWatcher server_listen_connection_watcher_; + MessageLoopForIO::FileDescriptorWatcher read_watcher_; + MessageLoopForIO::FileDescriptorWatcher write_watcher_; - bool is_active; - - // libevent's set functions set all the needed members of this struct, so no - // need to initialize before use. - struct event event; - }; - - EventHolder *server_listen_connection_event_; - EventHolder *read_event_; - EventHolder *write_event_; + // Are we currently blocked waiting for a write to complete. + bool is_blocked_on_write_; // If sending a message blocks then we use this variable // to keep track of where we are. |