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
3 years ago
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|