ENABLE_DEBUG_TOGGLE update, proper AIDL implementation

Data stats are now shown irrespective of
whether ENABLE_DEBUG_TOGGLE is toggled or not.
ITorServiceCallback.aidl has been updated to
include a new method updateBandwidth(long ,long)
to hook the data passed from the service into
the GUI.
This commit is contained in:
Sathyanarayanan Gunasekaran 2011-07-07 19:34:22 +05:30 committed by n8fr8
parent 841d83b3b4
commit d54e72e094
3 changed files with 64 additions and 35 deletions

View File

@ -694,7 +694,7 @@ public class Orbot extends Activity implements TorConstants, OnLongClickListener
mHandler.sendMessage(msg); mHandler.sendMessage(msg);
} }
@Override
public void logMessage(String value) throws RemoteException { public void logMessage(String value) throws RemoteException {
Message msg = mHandler.obtainMessage(TorServiceConstants.LOG_MSG); Message msg = mHandler.obtainMessage(TorServiceConstants.LOG_MSG);
@ -702,6 +702,23 @@ public class Orbot extends Activity implements TorConstants, OnLongClickListener
mHandler.sendMessage(msg); mHandler.sendMessage(msg);
} }
@Override
public void updateBandwidth(long upload, long download)
throws RemoteException {
Message msg = Message.obtain();
msg.what = TorServiceConstants.MESSAGE_TRAFFIC_COUNT;
Bundle data = new Bundle();
data.putLong("upload", upload);
data.putLong("download", download);
msg.setData(data);
mHandler.sendMessage(msg);
}
}; };

View File

@ -11,6 +11,11 @@ oneway interface ITorServiceCallback {
*/ */
void statusChanged(String value); void statusChanged(String value);
/**
* Called when the service returns the bandwidth user to display to the user
*/
void updateBandwidth(long value, long value2);
/** /**
* Called when the service has something to add to the log * Called when the service has something to add to the log
*/ */

View File

@ -1122,37 +1122,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst
sb.append("kb written"); sb.append("kb written");
logNotice(sb.toString()); logNotice(sb.toString());
DataCount datacount = new DataCount(written,read); }
Message msg = Message.obtain(); sendCallbackStatusMessage(written, read);
msg.what = MESSAGE_TRAFFIC_COUNT;
//msg.obj = datacount;
Bundle data = new Bundle();
data.putLong("upload", datacount.Upload);
data.putLong("download", datacount.Download);
msg.setData(data);
Orbot.currentInstance.mHandler.sendMessage(msg);
//sendCallbackStatusMessage(message);
} }
}
public class DataCount {
// data uploaded
public long Upload;
// data downloaded
public long Download;
DataCount(long Upload, long Download){
this.Upload = Upload;
this.Download = Download;
}
}
public void circuitStatus(String status, String circID, String path) { public void circuitStatus(String status, String circID, String path) {
@ -1423,6 +1400,36 @@ public class TorService extends Service implements TorServiceConstants, TorConst
inCallback = false; inCallback = false;
} }
private synchronized void sendCallbackStatusMessage (long upload, long download)
{
if (mCallbacks == null)
return;
// Broadcast to all clients the new value.
final int N = mCallbacks.beginBroadcast();
inCallback = true;
if (N > 0)
{
for (int i=0; i<N; i++) {
try {
mCallbacks.getBroadcastItem(i).updateBandwidth(upload, download);
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing
// the dead object for us.
}
}
}
mCallbacks.finishBroadcast();
inCallback = false;
}
private synchronized void sendCallbackLogMessage (String logMessage) private synchronized void sendCallbackLogMessage (String logMessage)
{ {