Index: mojo/edk/system/message_pipe_dispatcher.h |
diff --git a/mojo/edk/system/message_pipe_dispatcher.h b/mojo/edk/system/message_pipe_dispatcher.h |
index f898ea8a46fad05cd12b4981beac21cda110f9e1..fd7c5cd73647febdad6edb2a312e34d4e15d509e 100644 |
--- a/mojo/edk/system/message_pipe_dispatcher.h |
+++ b/mojo/edk/system/message_pipe_dispatcher.h |
@@ -14,6 +14,7 @@ |
#include "mojo/edk/system/awakable_list.h" |
#include "mojo/edk/system/dispatcher.h" |
#include "mojo/edk/system/ports/port_ref.h" |
+#include "mojo/edk/system/watcher_set.h" |
namespace mojo { |
namespace edk { |
@@ -41,17 +42,24 @@ class MessagePipeDispatcher : public Dispatcher { |
// Dispatcher: |
Type GetType() const override; |
- MojoResult Close() override; |
+ MojoResult Close(RequestContext* request_context) override; |
+ MojoResult Watch(MojoHandleSignals signals, |
+ const WatchCallback& callback, |
+ uintptr_t context, |
+ RequestContext* request_context) override; |
+ MojoResult CancelWatch(uintptr_t context) override; |
MojoResult WriteMessage(const void* bytes, |
uint32_t num_bytes, |
const DispatcherInTransit* dispatchers, |
uint32_t num_dispatchers, |
- MojoWriteMessageFlags flags) override; |
+ MojoWriteMessageFlags flags, |
+ RequestContext* request_context) override; |
MojoResult ReadMessage(void* bytes, |
uint32_t* num_bytes, |
MojoHandle* handles, |
uint32_t* num_handles, |
- MojoReadMessageFlags flags) override; |
+ MojoReadMessageFlags flags, |
+ RequestContext* request_context) override; |
HandleSignalsState GetHandleSignalsState() const override; |
MojoResult AddAwakable(Awakable* awakable, |
MojoHandleSignals signals, |
@@ -65,9 +73,9 @@ class MessagePipeDispatcher : public Dispatcher { |
bool EndSerialize(void* destination, |
ports::PortName* ports, |
PlatformHandle* handles) override; |
- bool BeginTransit() override; |
- void CompleteTransitAndClose() override; |
- void CancelTransit() override; |
+ bool BeginTransit(RequestContext* request_context) override; |
+ void CompleteTransitAndClose(RequestContext* request_context) override; |
+ void CancelTransit(RequestContext* request_context) override; |
static scoped_refptr<Dispatcher> Deserialize( |
const void* data, |
@@ -83,9 +91,10 @@ class MessagePipeDispatcher : public Dispatcher { |
~MessagePipeDispatcher() override; |
- MojoResult CloseNoLock(); |
+ MojoResult CloseNoLock(RequestContext* request_context); |
HandleSignalsState GetHandleSignalsStateNoLock() const; |
void OnPortStatusChanged(); |
+ void NotifyObserversForStateChangeNoLock(RequestContext* request_context); |
// These are safe to access from any thread without locking. |
NodeController* const node_controller_; |
@@ -103,6 +112,7 @@ class MessagePipeDispatcher : public Dispatcher { |
bool port_transferred_ = false; |
bool port_closed_ = false; |
AwakableList awakables_; |
+ WatcherSet watchers_; |
DISALLOW_COPY_AND_ASSIGN(MessagePipeDispatcher); |
}; |