mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 21:29:54 +01:00
Added startup and shutdown methods to BriarService.
This commit is contained in:
@@ -4,6 +4,7 @@ import static java.util.logging.Level.INFO;
|
|||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import net.sf.briar.R;
|
import net.sf.briar.R;
|
||||||
@@ -12,7 +13,9 @@ import net.sf.briar.api.db.DatabaseComponent;
|
|||||||
import net.sf.briar.api.db.DbException;
|
import net.sf.briar.api.db.DbException;
|
||||||
import net.sf.briar.api.plugins.PluginManager;
|
import net.sf.briar.api.plugins.PluginManager;
|
||||||
import roboguice.service.RoboService;
|
import roboguice.service.RoboService;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
@@ -24,6 +27,8 @@ public class BriarService extends RoboService {
|
|||||||
private static final Logger LOG =
|
private static final Logger LOG =
|
||||||
Logger.getLogger(BriarService.class.getName());
|
Logger.getLogger(BriarService.class.getName());
|
||||||
|
|
||||||
|
private final CountDownLatch startupLatch = new CountDownLatch(1);
|
||||||
|
private final CountDownLatch shutdownLatch = new CountDownLatch(1);
|
||||||
private final Binder binder = new BriarBinder();
|
private final Binder binder = new BriarBinder();
|
||||||
|
|
||||||
@Inject private DatabaseComponent db;
|
@Inject private DatabaseComponent db;
|
||||||
@@ -82,6 +87,7 @@ public class BriarService extends RoboService {
|
|||||||
int pluginsStarted = pluginManager.start(this);
|
int pluginsStarted = pluginManager.start(this);
|
||||||
if(LOG.isLoggable(INFO))
|
if(LOG.isLoggable(INFO))
|
||||||
LOG.info(pluginsStarted + " plugins started");
|
LOG.info(pluginsStarted + " plugins started");
|
||||||
|
startupLatch.countDown();
|
||||||
} catch(DbException e) {
|
} catch(DbException e) {
|
||||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
@@ -99,6 +105,7 @@ public class BriarService extends RoboService {
|
|||||||
if(LOG.isLoggable(INFO)) LOG.info("Key manager stopped");
|
if(LOG.isLoggable(INFO)) LOG.info("Key manager stopped");
|
||||||
db.close();
|
db.close();
|
||||||
if(LOG.isLoggable(INFO)) LOG.info("Database closed");
|
if(LOG.isLoggable(INFO)) LOG.info("Database closed");
|
||||||
|
shutdownLatch.countDown();
|
||||||
} catch(DbException e) {
|
} catch(DbException e) {
|
||||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
@@ -106,10 +113,41 @@ public class BriarService extends RoboService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void waitForStartup() throws InterruptedException {
|
||||||
|
startupLatch.await();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() {
|
||||||
|
stopSelf();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void waitForShutdown() throws InterruptedException {
|
||||||
|
shutdownLatch.await();
|
||||||
|
}
|
||||||
|
|
||||||
public class BriarBinder extends Binder {
|
public class BriarBinder extends Binder {
|
||||||
|
|
||||||
BriarService getService() {
|
public BriarService getService() {
|
||||||
return BriarService.this;
|
return BriarService.this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class BriarServiceConnection implements ServiceConnection {
|
||||||
|
|
||||||
|
private final CountDownLatch binderLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
|
private volatile IBinder binder = null;
|
||||||
|
|
||||||
|
public void onServiceConnected(ComponentName name, IBinder binder) {
|
||||||
|
this.binder = binder;
|
||||||
|
binderLatch.countDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onServiceDisconnected(ComponentName name) {}
|
||||||
|
|
||||||
|
public IBinder waitForBinder() throws InterruptedException {
|
||||||
|
binderLatch.await();
|
||||||
|
return binder;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user