Home | History | Annotate | Download | only in wince
      1 /*
      2  * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      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.
     12  *
     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.
     17  *
     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.
     22  */
     23 
     24 #ifndef DatabaseThreadWinCE_h
     25 #define DatabaseThreadWinCE_h
     26 
     27 #include <wtf/Deque.h>
     28 #include <wtf/RefCounted.h>
     29 
     30 namespace WebCore {
     31 
     32     class Database;
     33     class DatabaseTask;
     34 
     35     class DatabaseThread: public WTF::RefCounted<DatabaseThread> {
     36 
     37     public:
     38         static PassRefPtr<DatabaseThread> create() { return adoptRef(new DatabaseThread); }
     39         ~DatabaseThread();
     40 
     41         bool start() { return true; }
     42         void requestTermination();
     43         bool terminationRequested() const;
     44 
     45         void scheduleTask(PassRefPtr<DatabaseTask>);
     46         void scheduleImmediateTask(PassRefPtr<DatabaseTask>);
     47         void unscheduleDatabaseTasks(Database*);
     48         void recordDatabaseOpen(Database*);
     49         void recordDatabaseClosed(Database*);
     50 #ifndef NDEBUG
     51         ThreadIdentifier getThreadID() const { return currentThread(); }
     52 #endif
     53 
     54     private:
     55         DatabaseThread();
     56 
     57         void timerFired(Timer<DatabaseThread>*);
     58 
     59         Deque<RefPtr<DatabaseTask> > m_queue;
     60         Timer<DatabaseThread> m_timer;
     61     };
     62 
     63 } // namespace WebCore
     64 
     65 #endif // DatabaseThreadWinCE_h
     66