You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.0 KiB
50 lines
1.0 KiB
package org.n0m.pawsqlite; |
|
|
|
import java.io.File; |
|
import java.util.concurrent.LinkedBlockingQueue; |
|
|
|
import android.util.Log; |
|
|
|
|
|
public class DBRunner implements Runnable { |
|
private static final String TAG = "PawSQLite"; |
|
|
|
private LinkedBlockingQueue<DBRequest> queue; |
|
|
|
public String dbName; |
|
private File dbFile; |
|
|
|
DBRunner(File dbFile, final String dbName) { |
|
queue = new LinkedBlockingQueue<DBRequest>(); |
|
this.dbFile = dbFile; |
|
this.dbName = dbName; |
|
} |
|
|
|
public void queueRequest(DBRequest request) { |
|
try { |
|
queue.put(request); |
|
} catch (InterruptedException e) { |
|
Log.e(TAG, "Unexpected Error", e); |
|
request.callback.error( |
|
"Unexpected Error", |
|
"Thread Interrupted", |
|
e |
|
); |
|
} |
|
} |
|
|
|
public void run() { |
|
DBRequest request; |
|
DB db = new DB(dbFile, dbName); |
|
|
|
while(true) { |
|
try { |
|
request = queue.take(); |
|
} catch (InterruptedException e) { |
|
Log.e(TAG, "Unexpected Error", e); |
|
continue; |
|
} |
|
db.handleRequest(request); |
|
} |
|
} |
|
} |