10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*
20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without
50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions
60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met:
70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1. Redistributions of source code must retain the above copyright
80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    notice, this list of conditions and the following disclaimer.
90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    documentation and/or other materials provided with the distribution.
120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  This library is distributed in the hope that i will be useful,
140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  but WITHOUT ANY WARRANTY; without even the implied warranty of
150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  Library General Public License for more details.
170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  You should have received a copy of the GNU Library General Public License
190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  along with this library; see the file COPYING.LIB.  If not, write to
200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *  Boston, MA 02110-1301, USA.
220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */
230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
2568513a70bcd92384395513322f1b801e7bf9c729Steve Block#ifndef LocalStorageThreadWinCE_h
2668513a70bcd92384395513322f1b801e7bf9c729Steve Block#define LocalStorageThreadWinCE_h
270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/Deque.h>
290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/PassRefPtr.h>
300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore {
320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class StorageAreaSync;
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class LocalStorageTask;
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class LocalStorageThread : public RefCounted<LocalStorageThread> {
370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    public:
380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        static PassRefPtr<LocalStorageThread> create() { return adoptRef(new LocalStorageThread); }
390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        ~LocalStorageThread();
410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        bool start();
420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void scheduleImport(PassRefPtr<StorageAreaSync>);
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void scheduleSync(PassRefPtr<StorageAreaSync>);
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void terminate();
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void performTerminate();
460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    private:
480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        LocalStorageThread();
490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void timerFired(Timer<LocalStorageThread>*);
510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        Deque<RefPtr<LocalStorageTask> > m_queue;
530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        Timer<LocalStorageThread> m_timer;
540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    };
550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} // namespace WebCore
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
5868513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif // LocalStorageThreadWinCE_h
59