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

Side by Side Diff: jingle/glue/thread_wrapper.cc

Issue 8551004: base::Bind: Convert jingle/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « jingle/glue/pseudotcp_adapter_unittest.cc ('k') | jingle/notifier/base/chrome_async_socket.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "jingle/glue/thread_wrapper.h" 5 #include "jingle/glue/thread_wrapper.h"
6 6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
7 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
8 #include "base/threading/thread_local.h" 10 #include "base/threading/thread_local.h"
9 11
10 namespace jingle_glue { 12 namespace jingle_glue {
11 13
12 struct JingleThreadWrapper::PendingSend { 14 struct JingleThreadWrapper::PendingSend {
13 PendingSend(const talk_base::Message& message_value) 15 PendingSend(const talk_base::Message& message_value)
14 : sending_thread(JingleThreadWrapper::current()), 16 : sending_thread(JingleThreadWrapper::current()),
15 message(message_value), 17 message(message_value),
16 done_event(true, false) { 18 done_event(true, false) {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 148
147 PendingSend pending_send(message); 149 PendingSend pending_send(message);
148 { 150 {
149 base::AutoLock auto_lock(lock_); 151 base::AutoLock auto_lock(lock_);
150 pending_send_messages_.push_back(&pending_send); 152 pending_send_messages_.push_back(&pending_send);
151 } 153 }
152 154
153 // Need to signal |pending_send_event_| here in case the thread is 155 // Need to signal |pending_send_event_| here in case the thread is
154 // sending message to another thread. 156 // sending message to another thread.
155 pending_send_event_.Signal(); 157 pending_send_event_.Signal();
156 message_loop_->PostTask(FROM_HERE, NewRunnableMethod( 158 message_loop_->PostTask(FROM_HERE,
157 this, &JingleThreadWrapper::ProcessPendingSends)); 159 base::Bind(&JingleThreadWrapper::ProcessPendingSends,
160 base::Unretained(this)));
158 161
159 162
160 while (!pending_send.done_event.IsSignaled()) { 163 while (!pending_send.done_event.IsSignaled()) {
161 base::WaitableEvent* events[] = {&pending_send.done_event, 164 base::WaitableEvent* events[] = {&pending_send.done_event,
162 &current_thread->pending_send_event_}; 165 &current_thread->pending_send_event_};
163 size_t event = base::WaitableEvent::WaitMany(events, arraysize(events)); 166 size_t event = base::WaitableEvent::WaitMany(events, arraysize(events));
164 DCHECK(event == 0 || event == 1); 167 DCHECK(event == 0 || event == 1);
165 168
166 if (event == 1) 169 if (event == 1)
167 current_thread->ProcessPendingSends(); 170 current_thread->ProcessPendingSends();
(...skipping 29 matching lines...) Expand all
197 message.phandler = handler; 200 message.phandler = handler;
198 message.message_id = message_id; 201 message.message_id = message_id;
199 message.pdata = data; 202 message.pdata = data;
200 { 203 {
201 base::AutoLock auto_lock(lock_); 204 base::AutoLock auto_lock(lock_);
202 task_id = ++last_task_id_; 205 task_id = ++last_task_id_;
203 messages_.insert(std::pair<int, talk_base::Message>(task_id, message)); 206 messages_.insert(std::pair<int, talk_base::Message>(task_id, message));
204 } 207 }
205 208
206 if (delay_ms <= 0) { 209 if (delay_ms <= 0) {
207 message_loop_->PostTask(FROM_HERE, NewRunnableMethod( 210 message_loop_->PostTask(FROM_HERE,
208 this, &JingleThreadWrapper::RunTask, task_id)); 211 base::Bind(&JingleThreadWrapper::RunTask,
212 base::Unretained(this), task_id));
209 } else { 213 } else {
210 message_loop_->PostDelayedTask( 214 message_loop_->PostDelayedTask(FROM_HERE,
211 FROM_HERE, 215 base::Bind(&JingleThreadWrapper::RunTask,
212 NewRunnableMethod(this, &JingleThreadWrapper::RunTask, task_id), 216 base::Unretained(this), task_id),
213 delay_ms); 217 delay_ms);
214 } 218 }
215 } 219 }
216 220
217 void JingleThreadWrapper::RunTask(int task_id) { 221 void JingleThreadWrapper::RunTask(int task_id) {
218 bool have_message = false; 222 bool have_message = false;
219 talk_base::Message message; 223 talk_base::Message message;
220 { 224 {
221 base::AutoLock auto_lock(lock_); 225 base::AutoLock auto_lock(lock_);
222 MessagesQueue::iterator it = messages_.find(task_id); 226 MessagesQueue::iterator it = messages_.find(task_id);
223 if (it != messages_.end()) { 227 if (it != messages_.end()) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 286
283 void JingleThreadWrapper::Stop() { 287 void JingleThreadWrapper::Stop() {
284 NOTREACHED(); 288 NOTREACHED();
285 } 289 }
286 290
287 void JingleThreadWrapper::Run() { 291 void JingleThreadWrapper::Run() {
288 NOTREACHED(); 292 NOTREACHED();
289 } 293 }
290 294
291 } // namespace jingle_glue 295 } // namespace jingle_glue
OLDNEW
« no previous file with comments | « jingle/glue/pseudotcp_adapter_unittest.cc ('k') | jingle/notifier/base/chrome_async_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698