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