LocalStorageThreadWinCE.cpp revision 0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Redistribution and use in source and binary forms, with or without
5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modification, are permitted provided that the following conditions
6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * are met:
7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 1. Redistributions of source code must retain the above copyright
8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *    notice, this list of conditions and the following disclaimer.
9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *    documentation and/or other materials provided with the distribution.
12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  This library is distributed in the hope that i will be useful,
14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  Library General Public License for more details.
17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  You should have received a copy of the GNU Library General Public License
19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  along with this library; see the file COPYING.LIB.  If not, write to
20dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *  Boston, MA 02110-1301, USA.
22dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "LocalStorageThread.h"
26f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "LocalStorageTask.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "StorageAreaSync.h"
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
31f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectLocalStorageThread::LocalStorageThread()
33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch: m_timer(this, &LocalStorageThread::timerFired)
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectLocalStorageThread::~LocalStorageThread()
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochbool LocalStorageThread::start()
42f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
43f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    return true;
44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
45f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LocalStorageThread::timerFired(Timer<LocalStorageThread>*)
47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    if (!m_queue.isEmpty()) {
49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        RefPtr<LocalStorageTask> task = m_queue.first();
50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        task->performTask();
51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        m_queue.removeFirst();
52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        if (!m_queue.isEmpty())
53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch            m_timer.startOneShot(0);
54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    }
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
57f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LocalStorageThread::scheduleImport(PassRefPtr<StorageAreaSync> area)
5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{
5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    m_queue.append(LocalStorageTask::createImport(area));
60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    if (!m_timer.isActive())
61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        m_timer.startOneShot(0);
62f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
64f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LocalStorageThread::scheduleSync(PassRefPtr<StorageAreaSync> area)
65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
66f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_queue.append(LocalStorageTask::createSync(area));
67f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    if (!m_timer.isActive())
68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        m_timer.startOneShot(0);
69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LocalStorageThread::terminate()
72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_queue.clear();
74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_timer.stop();
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LocalStorageThread::performTerminate()
78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_queue.clear();
80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_timer.stop();
81f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
82f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
83f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
84f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch