Create two new events to signal enabling and disabling of transports

This commit is contained in:
Torsten Grote
2015-12-16 13:48:56 -02:00
parent c7e4d5ffa9
commit 2d28dcada2
14 changed files with 132 additions and 18 deletions

View File

@@ -18,9 +18,19 @@ import org.briarproject.android.contact.ContactListActivity;
import org.briarproject.android.forum.ForumListActivity;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.LocalAuthor;
import org.briarproject.api.TransportId;
import org.briarproject.api.android.ReferenceManager;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DbException;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.EventListener;
import org.briarproject.api.event.TransportAddedEvent;
import org.briarproject.api.event.TransportDisabledEvent;
import org.briarproject.api.event.TransportEnabledEvent;
import org.briarproject.api.event.TransportRemovedEvent;
import org.briarproject.api.plugins.Plugin;
import org.briarproject.api.plugins.PluginManager;
import java.util.ArrayList;
import java.util.List;
@@ -34,15 +44,17 @@ import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
public class DashboardActivity extends BriarActivity {
public class DashboardActivity extends BriarActivity implements EventListener {
private static final Logger LOG =
Logger.getLogger(DashboardActivity.class.getName());
@Inject private ReferenceManager referenceManager;
@Inject private PluginManager pluginManager;
// Fields that are accessed from background threads must be volatile
@Inject private volatile DatabaseComponent db;
@Inject private volatile EventBus eventBus;
@Override
public void onCreate(Bundle state) {
@@ -50,12 +62,41 @@ public class DashboardActivity extends BriarActivity {
handleIntent(getIntent());
}
@Override
public void onResume() {
super.onResume();
eventBus.addListener(this);
}
@Override
public void onPause() {
super.onPause();
eventBus.removeListener(this);
}
@Override
public void onNewIntent(Intent i) {
super.onNewIntent(i);
handleIntent(i);
}
@Override
public void eventOccurred(Event e) {
if (e instanceof TransportEnabledEvent) {
TransportId id = ((TransportEnabledEvent) e).getTransportId();
if (LOG.isLoggable(INFO)) {
LOG.info("TransportEnabledEvent: " + id.getString());
}
} else if (e instanceof TransportDisabledEvent) {
TransportId id = ((TransportDisabledEvent) e).getTransportId();
if (LOG.isLoggable(INFO)) {
LOG.info("TransportDisabledEvent: " + id.getString());
}
}
}
private void handleIntent(Intent i) {
boolean failed = i.getBooleanExtra("briar.STARTUP_FAILED", false);
long handle = i.getLongExtra("briar.LOCAL_AUTHOR_HANDLE", -1);

View File

@@ -172,7 +172,7 @@ class DroidtoothPlugin implements DuplexPlugin {
}
LOG.info("Socket bound");
socket = ss;
callback.pollNow();
callback.transportEnabled();
acceptContactConnections();
}
});
@@ -196,6 +196,8 @@ class DroidtoothPlugin implements DuplexPlugin {
if (ss != null) ss.close();
} catch (IOException e) {
if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
} finally {
callback.transportDisabled();
}
}

View File

@@ -391,6 +391,8 @@ class TorPlugin implements DuplexPlugin, EventHandler,
if (ss != null) ss.close();
} catch (IOException e) {
if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
} finally {
callback.transportDisabled();
}
}
@@ -459,7 +461,10 @@ class TorPlugin implements DuplexPlugin, EventHandler,
private void enableNetwork(boolean enable) throws IOException {
if (!running) return;
if (LOG.isLoggable(INFO)) LOG.info("Enabling network: " + enable);
if (!enable) circuitBuilt.set(false);
if (!enable) {
circuitBuilt.set(false);
callback.transportDisabled();
}
networkEnabled = enable;
controlConnection.setConf("DisableNetwork", enable ? "0" : "1");
}
@@ -549,7 +554,7 @@ class TorPlugin implements DuplexPlugin, EventHandler,
public void circuitStatus(String status, String id, String path) {
if (status.equals("BUILT") && !circuitBuilt.getAndSet(true)) {
LOG.info("First circuit built");
if (isRunning()) callback.pollNow();
if (isRunning()) callback.transportEnabled();
}
}
@@ -567,7 +572,7 @@ class TorPlugin implements DuplexPlugin, EventHandler,
if (LOG.isLoggable(INFO)) LOG.info(severity + " " + msg);
if (severity.equals("NOTICE") && msg.startsWith("Bootstrapped 100%")) {
bootstrapped = true;
if (isRunning()) callback.pollNow();
if (isRunning()) callback.transportEnabled();
}
}