Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Side by Side Diff: WebCore/platform/sql/SQLiteDatabase.h

Issue 596028: Make the DatabaseTracker thread-safe. (Closed) Base URL: http://svn.webkit.org/repository/webkit/trunk/
Patch Set: '' Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | WebCore/platform/sql/SQLiteDatabase.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com) 3 * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 // FULL - Any writing calls to the DB block until the data is actually on th e disk surface 90 // FULL - Any writing calls to the DB block until the data is actually on th e disk surface
91 // NORMAL - SQLite pauses at some critical moments when writing, but much le ss than FULL 91 // NORMAL - SQLite pauses at some critical moments when writing, but much le ss than FULL
92 // OFF - Calls return immediately after the data has been passed to disk 92 // OFF - Calls return immediately after the data has been passed to disk
93 enum SynchronousPragma { SyncOff = 0, SyncNormal = 1, SyncFull = 2 }; 93 enum SynchronousPragma { SyncOff = 0, SyncNormal = 1, SyncFull = 2 };
94 void setSynchronous(SynchronousPragma); 94 void setSynchronous(SynchronousPragma);
95 95
96 int lastError(); 96 int lastError();
97 const char* lastErrorMsg(); 97 const char* lastErrorMsg();
98 98
99 sqlite3* sqlite3Handle() const { 99 sqlite3* sqlite3Handle() const {
100 ASSERT(currentThread() == m_openingThread); 100 ASSERT(m_sharable || currentThread() == m_openingThread);
101 return m_db; 101 return m_db;
102 } 102 }
103 103
104 void setAuthorizer(PassRefPtr<DatabaseAuthorizer>); 104 void setAuthorizer(PassRefPtr<DatabaseAuthorizer>);
105 105
106 // (un)locks the database like a mutex 106 // (un)locks the database like a mutex
107 void lock(); 107 void lock();
108 void unlock(); 108 void unlock();
109 bool isAutoCommitOn() const; 109 bool isAutoCommitOn() const;
110 110
111 // Set this flag to allow access from multiple threads. Not all multi-threa ded accesses are safe!
112 // See http://www.sqlite.org/cvstrac/wiki?p=MultiThreading for more info, an d you must be running with compile flags and SQLite version appropriate
113 // to your cross-thread uses.
114 bool sharable() { return m_sharable; }
115 void setSharable(bool sharable) { m_sharable = sharable; }
116
111 private: 117 private:
112 static int authorizerFunction(void*, int, const char*, const char*, const ch ar*, const char*); 118 static int authorizerFunction(void*, int, const char*, const char*, const ch ar*, const char*);
113 119
114 void enableAuthorizer(bool enable); 120 void enableAuthorizer(bool enable);
115 121
116 int pageSize(); 122 int pageSize();
117 123
118 sqlite3* m_db; 124 sqlite3* m_db;
119 int m_lastError; 125 int m_lastError;
120 int m_pageSize; 126 int m_pageSize;
121 127
122 bool m_transactionInProgress; 128 bool m_transactionInProgress;
129 bool m_sharable;
123 130
124 Mutex m_authorizerLock; 131 Mutex m_authorizerLock;
125 RefPtr<DatabaseAuthorizer> m_authorizer; 132 RefPtr<DatabaseAuthorizer> m_authorizer;
126 133
127 Mutex m_lockingMutex; 134 Mutex m_lockingMutex;
128 ThreadIdentifier m_openingThread; 135 ThreadIdentifier m_openingThread;
129 136
130 }; // class SQLiteDatabase 137 }; // class SQLiteDatabase
131 138
132 } // namespace WebCore 139 } // namespace WebCore
133 140
134 #endif 141 #endif
OLDNEW
« no previous file with comments | « no previous file | WebCore/platform/sql/SQLiteDatabase.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698