diff options
author | yzshen <yzshen@chromium.org> | 2016-02-22 17:22:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-23 01:23:00 +0000 |
commit | 8ef9022a0d352066587791b3e225ca264c688ade (patch) | |
tree | 099161b2828cb2e83dfb77037930a6ae68c78b8e /mojo/public/cpp/bindings/lib/binding_state.h | |
parent | 9166c9c8a3fbbd0dc74f837660ca6952a2203402 (diff) | |
download | chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.zip chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.tar.gz chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.tar.bz2 |
Reland "Mojo C++ bindings: support sync methods - part 2"
This CL introduces the correct re-entrancy behavior: when a sync call is waiting
for response, allow incoming sync requests on the same thread to re-enter, async
messages are queued until the sync call completes.
The following will be in future CLs:
- Support sync calls with associated interfaces.
The original CL is at https://codereview.chromium.org/1713203002/
BUG=577699
Review URL: https://codereview.chromium.org/1723673002
Cr-Commit-Position: refs/heads/master@{#376892}
Diffstat (limited to 'mojo/public/cpp/bindings/lib/binding_state.h')
-rw-r--r-- | mojo/public/cpp/bindings/lib/binding_state.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mojo/public/cpp/bindings/lib/binding_state.h b/mojo/public/cpp/bindings/lib/binding_state.h index 3d025fb..6483d94 100644 --- a/mojo/public/cpp/bindings/lib/binding_state.h +++ b/mojo/public/cpp/bindings/lib/binding_state.h @@ -56,8 +56,8 @@ class BindingState<Interface, false> { filters.Append<internal::MessageHeaderValidator>(); filters.Append<typename Interface::RequestValidator_>(); - router_ = - new internal::Router(std::move(handle), std::move(filters), waiter); + router_ = new internal::Router(std::move(handle), std::move(filters), + Interface::HasSyncMethods_, waiter); router_->set_incoming_receiver(&stub_); router_->set_connection_error_handler( [this]() { connection_error_handler_.Run(); }); |