| Index: mojo/public/bindings/lib/connector.cc
|
| diff --git a/mojo/public/bindings/lib/connector.cc b/mojo/public/bindings/lib/connector.cc
|
| index 3bb04f9fff9c969f54cb69fd19b268cbe1c43f68..804b1b2e40cddf414617bc7c53f467f1b0712f7d 100644
|
| --- a/mojo/public/bindings/lib/connector.cc
|
| +++ b/mojo/public/bindings/lib/connector.cc
|
| @@ -20,10 +20,6 @@ Connector::Connector(Handle message_pipe)
|
| }
|
|
|
| Connector::~Connector() {
|
| - if (read_callback_.IsPending())
|
| - read_callback_.Cancel();
|
| - if (write_callback_.IsPending())
|
| - write_callback_.Cancel();
|
| }
|
|
|
| void Connector::SetIncomingReceiver(MessageReceiver* receiver) {
|
| @@ -51,24 +47,18 @@ void Connector::OnHandleReady(Callback* callback, MojoResult result) {
|
|
|
| void Connector::WaitToReadMore() {
|
| read_callback_.SetOwnerToNotify(this);
|
| -
|
| - bool ok = BindingsSupport::Get()->AsyncWait(message_pipe_,
|
| - MOJO_WAIT_FLAG_READABLE,
|
| - MOJO_DEADLINE_INDEFINITE,
|
| - &read_callback_);
|
| - if (!ok)
|
| - error_ = true;
|
| + read_callback_.SetAsyncWaitID(
|
| + BindingsSupport::Get()->AsyncWait(message_pipe_,
|
| + MOJO_WAIT_FLAG_READABLE,
|
| + &read_callback_));
|
| }
|
|
|
| void Connector::WaitToWriteMore() {
|
| write_callback_.SetOwnerToNotify(this);
|
| -
|
| - bool ok = BindingsSupport::Get()->AsyncWait(message_pipe_,
|
| - MOJO_WAIT_FLAG_WRITABLE,
|
| - MOJO_DEADLINE_INDEFINITE,
|
| - &write_callback_);
|
| - if (!ok)
|
| - error_ = true;
|
| + write_callback_.SetAsyncWaitID(
|
| + BindingsSupport::Get()->AsyncWait(message_pipe_,
|
| + MOJO_WAIT_FLAG_WRITABLE,
|
| + &write_callback_));
|
| }
|
|
|
| void Connector::ReadMore() {
|
| @@ -135,12 +125,13 @@ void Connector::WriteMore() {
|
| // ----------------------------------------------------------------------------
|
|
|
| Connector::Callback::Callback()
|
| - : owner_(NULL) {
|
| + : owner_(NULL),
|
| + async_wait_id_(0) {
|
| }
|
|
|
| -void Connector::Callback::Cancel() {
|
| - owner_ = NULL;
|
| - BindingsSupport::Get()->CancelWait(this);
|
| +Connector::Callback::~Callback() {
|
| + if (owner_)
|
| + BindingsSupport::Get()->CancelWait(async_wait_id_);
|
| }
|
|
|
| void Connector::Callback::SetOwnerToNotify(Connector* owner) {
|
| @@ -148,8 +139,8 @@ void Connector::Callback::SetOwnerToNotify(Connector* owner) {
|
| owner_ = owner;
|
| }
|
|
|
| -bool Connector::Callback::IsPending() const {
|
| - return owner_ != NULL;
|
| +void Connector::Callback::SetAsyncWaitID(BindingsSupport::AsyncWaitID id) {
|
| + async_wait_id_ = id;
|
| }
|
|
|
| void Connector::Callback::OnHandleReady(MojoResult result) {
|
|
|