getRouterContext() helper function

This commit is contained in:
str4d
2014-10-02 03:55:24 +00:00
parent ca623e6b18
commit cb6b7c4f48
4 changed files with 38 additions and 36 deletions

View File

@ -2,27 +2,15 @@ package net.i2p.android.router;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.SortedSet;
import java.util.TreeSet;
import net.i2p.I2PAppContext;
import net.i2p.android.router.R;
import net.i2p.android.router.service.StatSummarizer;
import net.i2p.android.router.util.Util;
import net.i2p.router.RouterContext;
@ -31,7 +19,11 @@ import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.stat.StatManager;
import net.i2p.util.LogManager;
import net.i2p.util.OrderedProperties;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.SortedSet;
public class SettingsActivity extends PreferenceActivity {
// Actions for legacy settings
@ -51,10 +43,10 @@ public class SettingsActivity extends PreferenceActivity {
addPreferencesFromResource(R.xml.settings_net);
} else if (ACTION_PREFS_GRAPHS.equals(action)){
addPreferencesFromResource(R.xml.settings_graphs);
setupGraphSettings(this, getPreferenceScreen(), getRouterContext());
setupGraphSettings(this, getPreferenceScreen(), Util.getRouterContext());
} else if (ACTION_PREFS_LOGGING.equals(action)) {
addPreferencesFromResource(R.xml.settings_logging);
RouterContext ctx = getRouterContext();
RouterContext ctx = Util.getRouterContext();
if (ctx != null)
setupLoggingSettings(this, getPreferenceScreen(), ctx);
} else if (ACTION_PREFS_ADVANCED.equals(action)) {
@ -66,14 +58,6 @@ public class SettingsActivity extends PreferenceActivity {
}
}
protected static RouterContext getRouterContext() {
List<RouterContext> contexts = RouterContext.listContexts();
if ( !((contexts == null) || (contexts.isEmpty())) ) {
return contexts.get(0);
}
return null;
}
protected static void setupGraphSettings(Context context, PreferenceScreen ps, RouterContext ctx) {
if (ctx == null) {
PreferenceCategory noRouter = new PreferenceCategory(context);
@ -177,13 +161,12 @@ public class SettingsActivity extends PreferenceActivity {
Properties logSettings = lProps.get(1);
// Apply new config if we are running.
List<RouterContext> contexts = RouterContext.listContexts();
if ( !((contexts == null) || (contexts.isEmpty())) ) {
RouterContext _context = contexts.get(0);
_context.router().saveConfig(props, null);
RouterContext rCtx = Util.getRouterContext();
if (rCtx != null) {
rCtx.router().saveConfig(props, null);
// Merge in new log settings
saveLoggingChanges(_context, logSettings);
saveLoggingChanges(rCtx, logSettings);
} else {
// Merge in new config settings, write the file.
InitActivities init = new InitActivities(this);
@ -227,12 +210,12 @@ public class SettingsActivity extends PreferenceActivity {
addPreferencesFromResource(R.xml.settings_net);
} else if ("graphs".equals(settings)) {
addPreferencesFromResource(R.xml.settings_graphs);
RouterContext ctx = getRouterContext();
RouterContext ctx = Util.getRouterContext();
if (ctx != null)
setupGraphSettings(getActivity(), getPreferenceScreen(), ctx);
} else if ("logging".equals(settings)) {
addPreferencesFromResource(R.xml.settings_logging);
RouterContext ctx = getRouterContext();
RouterContext ctx = Util.getRouterContext();
if (ctx != null)
setupLoggingSettings(getActivity(), getPreferenceScreen(), ctx);
} else if ("advanced".equals(settings)) {

View File

@ -323,12 +323,11 @@ public class RouterService extends Service {
return;
}
setState(State.RUNNING);
List<?> contexts = RouterContext.listContexts();
if((contexts == null) || (contexts.isEmpty())) {
_statusBar.replace(StatusBar.ICON_RUNNING, "I2P is running");
_context = Util.getRouterContext();
if (_context == null) {
throw new IllegalStateException("No contexts. This is usually because the router is either starting up or shutting down.");
}
_statusBar.replace(StatusBar.ICON_RUNNING, "I2P is running");
_context = (RouterContext) contexts.get(0);
_context.router().setKillVMOnEnd(false);
Job loadJob = new LoadClientsJob(_context, _notif);
_context.jobQueue().addJob(loadJob);

View File

@ -5,6 +5,7 @@ import java.util.List;
import java.util.StringTokenizer;
import java.util.concurrent.CopyOnWriteArrayList;
import net.i2p.android.router.util.Util;
import net.i2p.router.RouterContext;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
@ -18,15 +19,20 @@ public class StatSummarizer implements Runnable {
private Thread _thread;
public StatSummarizer() {
_context = RouterContext.listContexts().get(0);
_context = Util.getRouterContext();
_listeners = new CopyOnWriteArrayList<SummaryListener>();
_instance = this;
_context.addShutdownTask(new Shutdown());
if (_context != null)
_context.addShutdownTask(new Shutdown());
}
public static StatSummarizer instance() { return _instance; }
public void run() {
// We can't do anything without a RouterContext
if (_context == null)
return;
_thread = Thread.currentThread();
String specs = "";
while (_isRunning && _context.router().isAlive()) {

View File

@ -7,6 +7,7 @@ import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
import net.i2p.I2PAppContext;
import net.i2p.router.RouterContext;
import net.i2p.util.OrderedProperties;
import java.util.ArrayList;
@ -31,6 +32,19 @@ public abstract class Util {
return "??";
}
/**
* Get the active RouterContext.
*
* @return the active RouterContext, or null
*/
public static RouterContext getRouterContext() {
List<RouterContext> contexts = RouterContext.listContexts();
if ( !((contexts == null) || (contexts.isEmpty())) ) {
return contexts.get(0);
}
return null;
}
private static final String ANDROID_TAG = "I2P";
public static void e(String m) {