mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 04:04:16 +00:00
updated
This commit is contained in:
parent
95ae23a32c
commit
a3286ebac3
@ -18,7 +18,7 @@ public class DaemonSingleton {
|
|||||||
public synchronized void addStateChangeListener(StateChangeListener listener) { stateChangeListeners.add(listener); }
|
public synchronized void addStateChangeListener(StateChangeListener listener) { stateChangeListeners.add(listener); }
|
||||||
public synchronized void removeStateChangeListener(StateChangeListener listener) { stateChangeListeners.remove(listener); }
|
public synchronized void removeStateChangeListener(StateChangeListener listener) { stateChangeListeners.remove(listener); }
|
||||||
|
|
||||||
public void stopAcceptingTunnels() {
|
public synchronized void stopAcceptingTunnels() {
|
||||||
if(isStartedOkay()){
|
if(isStartedOkay()){
|
||||||
state=State.gracefulShutdownInProgress;
|
state=State.gracefulShutdownInProgress;
|
||||||
fireStateChange();
|
fireStateChange();
|
||||||
@ -39,35 +39,45 @@ public class DaemonSingleton {
|
|||||||
public State getState() { return state; }
|
public State getState() { return state; }
|
||||||
|
|
||||||
{
|
{
|
||||||
fireStateChange();
|
synchronized(this){
|
||||||
new Thread(new Runnable(){
|
fireStateChange();
|
||||||
|
new Thread(new Runnable(){
|
||||||
@Override
|
|
||||||
public void run() {
|
@Override
|
||||||
try {
|
public void run() {
|
||||||
I2PD_JNI.loadLibraries();
|
try {
|
||||||
state = State.jniLibraryLoaded;
|
I2PD_JNI.loadLibraries();
|
||||||
fireStateChange();
|
synchronized (DaemonSingleton.this) {
|
||||||
} catch (Throwable tr) {
|
state = State.jniLibraryLoaded;
|
||||||
lastThrowable=tr;
|
fireStateChange();
|
||||||
state = State.startFailed;
|
}
|
||||||
fireStateChange();
|
} catch (Throwable tr) {
|
||||||
return;
|
lastThrowable=tr;
|
||||||
|
synchronized (DaemonSingleton.this) {
|
||||||
|
state = State.startFailed;
|
||||||
|
fireStateChange();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
synchronized (DaemonSingleton.this) {
|
||||||
|
daemonStartResult = I2PD_JNI.startDaemon();
|
||||||
|
if("ok".equals(daemonStartResult)){state=State.startedOkay;setStartedOkay(true);}
|
||||||
|
else state=State.startFailed;
|
||||||
|
fireStateChange();
|
||||||
|
}
|
||||||
|
} catch (Throwable tr) {
|
||||||
|
lastThrowable=tr;
|
||||||
|
synchronized (DaemonSingleton.this) {
|
||||||
|
state = State.startFailed;
|
||||||
|
fireStateChange();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
daemonStartResult = I2PD_JNI.startDaemon();
|
}, "i2pdDaemonStart").start();
|
||||||
if("ok".equals(daemonStartResult)){state=State.startedOkay;setStartedOkay(true);}
|
}
|
||||||
else state=State.startFailed;
|
|
||||||
fireStateChange();
|
|
||||||
} catch (Throwable tr) {
|
|
||||||
lastThrowable=tr;
|
|
||||||
state = State.startFailed;
|
|
||||||
fireStateChange();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, "i2pdDaemonStart").start();
|
|
||||||
}
|
}
|
||||||
private Throwable lastThrowable;
|
private Throwable lastThrowable;
|
||||||
private String daemonStartResult="N/A";
|
private String daemonStartResult="N/A";
|
||||||
@ -90,16 +100,22 @@ public class DaemonSingleton {
|
|||||||
public String getDaemonStartResult() {
|
public String getDaemonStartResult() {
|
||||||
return daemonStartResult;
|
return daemonStartResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Object startedOkayLock = new Object();
|
||||||
|
|
||||||
public synchronized boolean isStartedOkay() {
|
public boolean isStartedOkay() {
|
||||||
return startedOkay;
|
synchronized (startedOkayLock) {
|
||||||
|
return startedOkay;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void setStartedOkay(boolean startedOkay) {
|
private void setStartedOkay(boolean startedOkay) {
|
||||||
this.startedOkay = startedOkay;
|
synchronized (startedOkayLock) {
|
||||||
|
this.startedOkay = startedOkay;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stopDaemon() {
|
public synchronized void stopDaemon() {
|
||||||
if(isStartedOkay()){
|
if(isStartedOkay()){
|
||||||
try {I2PD_JNI.stopDaemon();}catch(Throwable tr){Log.e(TAG, "", tr);}
|
try {I2PD_JNI.stopDaemon();}catch(Throwable tr){Log.e(TAG, "", tr);}
|
||||||
setStartedOkay(false);
|
setStartedOkay(false);
|
||||||
|
@ -5,8 +5,6 @@ import java.io.StringWriter;
|
|||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
import org.purplei2p.i2pd.DaemonSingleton.State;
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@ -76,8 +74,9 @@ public class I2PD extends Activity {
|
|||||||
private void localDestroy() {
|
private void localDestroy() {
|
||||||
textView = null;
|
textView = null;
|
||||||
daemon.removeStateChangeListener(daemonStateChangeListener);
|
daemon.removeStateChangeListener(daemonStateChangeListener);
|
||||||
if(getGracefulQuitTimer()!=null) {
|
Timer gracefulQuitTimer = getGracefulQuitTimer();
|
||||||
getGracefulQuitTimer().cancel();
|
if(gracefulQuitTimer!=null) {
|
||||||
|
gracefulQuitTimer.cancel();
|
||||||
setGracefulQuitTimer(null);
|
setGracefulQuitTimer(null);
|
||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user