Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1485)

Unified Diff: mojo/public/tests/simple_bindings_support.cc

Issue 62773003: Mojo: Add BindingsSupportImpl on top of HandleWatcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/tests/simple_bindings_support.cc
diff --git a/mojo/public/tests/simple_bindings_support.cc b/mojo/public/tests/simple_bindings_support.cc
index 979474dfe5acf289d3e42fc8742b5f13d54eecd8..a59a66e81d78cc8d92ac6827546afae3915baeec 100644
--- a/mojo/public/tests/simple_bindings_support.cc
+++ b/mojo/public/tests/simple_bindings_support.cc
@@ -15,47 +15,52 @@ SimpleBindingsSupport::SimpleBindingsSupport() {
SimpleBindingsSupport::~SimpleBindingsSupport() {
BindingsSupport::Set(NULL);
+
+ for (WaiterList::iterator it = waiters_.begin(); it != waiters_.end(); ++it)
+ delete *it;
}
-bool SimpleBindingsSupport::AsyncWait(Handle handle,
- MojoWaitFlags flags,
- MojoDeadline deadline,
- AsyncWaitCallback* callback) {
- Waiter waiter;
- waiter.handle = handle;
- waiter.flags = flags;
- waiter.deadline = deadline;
- waiter.callback = callback;
+BindingsSupport::AsyncWaitID SimpleBindingsSupport::AsyncWait(
+ Handle handle,
+ MojoWaitFlags flags,
+ AsyncWaitCallback* callback) {
+ Waiter* waiter = new Waiter();
+ waiter->handle = handle;
+ waiter->flags = flags;
+ waiter->callback = callback;
waiters_.push_back(waiter);
- return true;
+ return waiter;
}
-void SimpleBindingsSupport::CancelWait(AsyncWaitCallback* callback) {
- std::list<Waiter>::iterator it = waiters_.begin();
+void SimpleBindingsSupport::CancelWait(AsyncWaitID async_wait_id) {
+ Waiter* waiter = static_cast<Waiter*>(async_wait_id);
+
+ WaiterList::iterator it = waiters_.begin();
while (it != waiters_.end()) {
- if (it->callback == callback) {
- std::list<Waiter>::iterator doomed = it++;
+ if (*it == waiter) {
+ WaiterList::iterator doomed = it++;
waiters_.erase(doomed);
} else {
++it;
}
}
+
+ delete waiter;
}
void SimpleBindingsSupport::Process() {
typedef std::pair<AsyncWaitCallback*, MojoResult> Result;
std::list<Result> results;
- // TODO(darin): Honor given deadline.
-
- std::list<Waiter>::iterator it = waiters_.begin();
+ WaiterList::iterator it = waiters_.begin();
while (it != waiters_.end()) {
- const Waiter& waiter = *it;
+ Waiter* waiter = *it;
MojoResult result;
- if (IsReady(waiter.handle, waiter.flags, &result)) {
- results.push_back(std::make_pair(waiter.callback, result));
- std::list<Waiter>::iterator doomed = it++;
+ if (IsReady(waiter->handle, waiter->flags, &result)) {
+ results.push_back(std::make_pair(waiter->callback, result));
+ WaiterList::iterator doomed = it++;
waiters_.erase(doomed);
+ delete waiter;
} else {
++it;
}

Powered by Google App Engine
This is Rietveld 408576698