2
* Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* This library is distributed in the hope that i will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Library General Public License for more details.
18
* You should have received a copy of the GNU Library General Public License
19
* along with this library; see the file COPYING.LIB. If not, write to
20
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21
* Boston, MA 02110-1301, USA.
25
#include "DatabaseThread.h"
28
#include "DatabaseTask.h"
32
DatabaseThread::DatabaseThread()
33
: m_timer(this, &DatabaseThread::timerFired)
37
DatabaseThread::~DatabaseThread()
41
void DatabaseThread::requestTermination()
46
bool DatabaseThread::terminationRequested() const
48
return m_queue.isEmpty();
51
void DatabaseThread::timerFired(Timer<DatabaseThread>*)
53
if (!m_queue.isEmpty()) {
54
RefPtr<DatabaseTask> task = m_queue.first();
56
m_queue.removeFirst();
57
if (!m_queue.isEmpty())
58
m_timer.startOneShot(0);
62
void DatabaseThread::scheduleTask(PassRefPtr<DatabaseTask> task)
65
if (!m_timer.isActive())
66
m_timer.startOneShot(0);
69
void DatabaseThread::scheduleImmediateTask(PassRefPtr<DatabaseTask> task)
74
void DatabaseThread::unscheduleDatabaseTasks(Database* database)
76
Deque<RefPtr<DatabaseTask> > reservedTasks;
77
for (Deque<RefPtr<DatabaseTask> >::const_iterator i = m_queue.begin(); i != m_queue.end(); ++i) {
78
if ((*i)->database() != database)
79
reservedTasks.append(*i);
82
m_queue.swap(reservedTasks);
85
void DatabaseThread::recordDatabaseOpen(Database* database)
90
void DatabaseThread::recordDatabaseClosed(Database* database)
95
} // namespace WebCore