| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/chrome_thread.h" |
| |
| // Friendly names for the well-known threads. |
| static const char* chrome_thread_names[ChromeThread::ID_COUNT] = { |
| "Chrome_IOThread", // IO |
| "Chrome_FileThread", // FILE |
| "Chrome_DBThread", // DB |
| "Chrome_HistoryThread", // HISTORY |
| }; |
| |
| Lock ChromeThread::lock_; |
| |
| ChromeThread* ChromeThread::chrome_threads_[ID_COUNT] = { |
| NULL, // IO |
| NULL, // FILE |
| NULL, // DB |
| NULL, // HISTORY |
| }; |
| |
| ChromeThread::ChromeThread(ChromeThread::ID identifier) |
| : Thread(chrome_thread_names[identifier]), |
| identifier_(identifier) { |
| AutoLock lock(lock_); |
| DCHECK(identifier >= 0 && identifier < ID_COUNT); |
| DCHECK(chrome_threads_[identifier] == NULL); |
| chrome_threads_[identifier_] = this; |
| } |
| |
| ChromeThread::~ChromeThread() { |
| AutoLock lock(lock_); |
| chrome_threads_[identifier_] = NULL; |
| } |
| |
| // static |
| MessageLoop* ChromeThread::GetMessageLoop(ID identifier) { |
| AutoLock lock(lock_); |
| DCHECK(identifier >= 0 && identifier < ID_COUNT); |
| |
| if (chrome_threads_[identifier]) |
| return chrome_threads_[identifier]->message_loop(); |
| |
| return NULL; |
| } |
| |