| Index: chrome/common/ipc_sync_channel.h
|
| diff --git a/chrome/common/ipc_sync_channel.h b/chrome/common/ipc_sync_channel.h
|
| index 6c03745b6813946c1289370c4b091513445f6a63..725fb332c67c73224e97043d7401cc0987dad959 100644
|
| --- a/chrome/common/ipc_sync_channel.h
|
| +++ b/chrome/common/ipc_sync_channel.h
|
| @@ -5,19 +5,20 @@
|
| #ifndef CHROME_COMMON_IPC_SYNC_SENDER_H__
|
| #define CHROME_COMMON_IPC_SYNC_SENDER_H__
|
|
|
| -#include <windows.h>
|
| #include <string>
|
| #include <deque>
|
| #include "base/basictypes.h"
|
| #include "base/lock.h"
|
| -#include "base/object_watcher.h"
|
| #include "base/ref_counted.h"
|
| #include "base/scoped_handle.h"
|
| +#include "base/waitable_event.h"
|
| +#include "base/waitable_event_watcher.h"
|
| #include "chrome/common/ipc_channel_proxy.h"
|
|
|
| namespace IPC {
|
|
|
| class SyncMessage;
|
| +class MessageReplyDeserializer;
|
|
|
| // This is similar to IPC::ChannelProxy, with the added feature of supporting
|
| // sending synchronous messages.
|
| @@ -26,12 +27,12 @@ class SyncMessage;
|
| // is running and it's used to send a message, then it will use the invalid
|
| // message loop pointer to proxy it to the ipc thread.
|
| class SyncChannel : public ChannelProxy,
|
| - public base::ObjectWatcher::Delegate {
|
| + public base::WaitableEventWatcher::Delegate {
|
| public:
|
| SyncChannel(const std::wstring& channel_id, Channel::Mode mode,
|
| Channel::Listener* listener, MessageFilter* filter,
|
| MessageLoop* ipc_message_loop, bool create_pipe_now,
|
| - HANDLE shutdown_event);
|
| + base::WaitableEvent* shutdown_event);
|
| ~SyncChannel();
|
|
|
| virtual bool Send(Message* message);
|
| @@ -50,12 +51,12 @@ class SyncChannel : public ChannelProxy,
|
| // can be deleted while it's being used in a different thread. See
|
| // ChannelProxy::Context for more information.
|
| class SyncContext : public Context,
|
| - public base::ObjectWatcher::Delegate {
|
| + public base::WaitableEventWatcher::Delegate {
|
| public:
|
| SyncContext(Channel::Listener* listener,
|
| MessageFilter* filter,
|
| MessageLoop* ipc_thread,
|
| - HANDLE shutdown_event);
|
| + base::WaitableEvent* shutdown_event);
|
|
|
| ~SyncContext();
|
|
|
| @@ -69,11 +70,11 @@ class SyncChannel : public ChannelProxy,
|
|
|
| // Returns an event that's set when the send is complete, timed out or the
|
| // process shut down.
|
| - HANDLE GetSendDoneEvent();
|
| + base::WaitableEvent* GetSendDoneEvent();
|
|
|
| // Returns an event that's set when an incoming message that's not the reply
|
| // needs to get dispatched (by calling SyncContext::DispatchMessages).
|
| - HANDLE GetDispatchEvent();
|
| + base::WaitableEvent* GetDispatchEvent();
|
|
|
| void DispatchMessages();
|
|
|
| @@ -86,7 +87,7 @@ class SyncChannel : public ChannelProxy,
|
| // times out.
|
| void OnSendTimeout(int message_id);
|
|
|
| - HANDLE shutdown_event() { return shutdown_event_; }
|
| + base::WaitableEvent* shutdown_event() { return shutdown_event_; }
|
|
|
| private:
|
| // IPC::ChannelProxy methods that we override.
|
| @@ -103,17 +104,18 @@ class SyncChannel : public ChannelProxy,
|
| // Cancels all pending Send calls.
|
| void CancelPendingSends();
|
|
|
| - // ObjectWatcher::Delegate implementation.
|
| - virtual void OnObjectSignaled(HANDLE object);
|
| + // WaitableEventWatcher::Delegate implementation.
|
| + virtual void OnWaitableEventSignaled(base::WaitableEvent* arg);
|
|
|
| // When sending a synchronous message, this structure contains an object that
|
| // knows how to deserialize the response.
|
| struct PendingSyncMsg {
|
| - PendingSyncMsg(int id, IPC::MessageReplyDeserializer* d, HANDLE e) :
|
| + PendingSyncMsg(int id, IPC::MessageReplyDeserializer* d,
|
| + base::WaitableEvent* e) :
|
| id(id), deserializer(d), done_event(e), send_result(false) { }
|
| int id;
|
| IPC::MessageReplyDeserializer* deserializer;
|
| - HANDLE done_event;
|
| + base::WaitableEvent* done_event;
|
| bool send_result;
|
| };
|
|
|
| @@ -123,19 +125,19 @@ class SyncChannel : public ChannelProxy,
|
|
|
| scoped_refptr<ReceivedSyncMsgQueue> received_sync_msgs_;
|
|
|
| - HANDLE shutdown_event_;
|
| - base::ObjectWatcher shutdown_watcher_;
|
| + base::WaitableEvent* shutdown_event_;
|
| + base::WaitableEventWatcher shutdown_watcher_;
|
| };
|
|
|
| private:
|
| - // ObjectWatcher::Delegate implementation.
|
| - virtual void OnObjectSignaled(HANDLE object);
|
| + // WaitableEventWatcher::Delegate implementation.
|
| + virtual void OnWaitableEventSignaled(base::WaitableEvent* arg);
|
|
|
| SyncContext* sync_context() { return reinterpret_cast<SyncContext*>(context()); }
|
|
|
| // Both these functions wait for a reply, timeout or process shutdown. The
|
| // latter one also runs a nested message loop in the meantime.
|
| - void WaitForReply(HANDLE pump_messages_event);
|
| + void WaitForReply(base::WaitableEvent* pump_messages_event);
|
|
|
| // Runs a nested message loop until a reply arrives, times out, or the process
|
| // shuts down.
|
| @@ -144,8 +146,8 @@ class SyncChannel : public ChannelProxy,
|
| bool sync_messages_with_no_timeout_allowed_;
|
|
|
| // Used to signal events between the IPC and listener threads.
|
| - base::ObjectWatcher send_done_watcher_;
|
| - base::ObjectWatcher dispatch_watcher_;
|
| + base::WaitableEventWatcher send_done_watcher_;
|
| + base::WaitableEventWatcher dispatch_watcher_;
|
|
|
| DISALLOW_EVIL_CONSTRUCTORS(SyncChannel);
|
| };
|
|
|