Skip to content

Commit

Permalink
clean up signal handling a bit
Browse files Browse the repository at this point in the history
Don't need to create a new object for every signal. I didn't think about
using the non-parameterised handler interface.
  • Loading branch information
scintill committed Aug 31, 2017
1 parent 8827fcc commit 74d23a3
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions src/java/net/scintill/ril_ofono/RilOfono.java
Expand Up @@ -120,6 +120,7 @@ public RilOfono(Context context, int preferredNetworkType, int cdmaSubscription,
mDbusHandler = new Handler(dbusThread.getLooper(), new EmptyHandlerCallback());

mDbusHandler.post(new Runnable() {
@SuppressWarnings("unchecked")
@Override
public void run() {
try {
Expand All @@ -128,12 +129,13 @@ public void run() {
mSim = mDbus.getRemoteObject(OFONO_BUS_NAME, MODEM_PATH, SimManager.class);
mNetReg = mDbus.getRemoteObject(OFONO_BUS_NAME, MODEM_PATH, NetworkRegistration.class);
mMessenger = mDbus.getRemoteObject(OFONO_BUS_NAME, MODEM_PATH, MessageManager.class);
delegateSigHandler(Manager.ModemAdded.class);
delegateSigHandler(Manager.ModemRemoved.class);
delegateSigHandler(Modem.PropertyChanged.class);
delegateSigHandler(NetworkRegistration.PropertyChanged.class);
delegateSigHandler(SimManager.PropertyChanged.class);
delegateSigHandler(org.ofono.Message.PropertyChanged.class);
DBusSigHandler sigHandler = new DbusSignalHandler();
mDbus.addSigHandler(Manager.ModemAdded.class, sigHandler);
mDbus.addSigHandler(Manager.ModemRemoved.class, sigHandler);
mDbus.addSigHandler(Modem.PropertyChanged.class, sigHandler);
mDbus.addSigHandler(NetworkRegistration.PropertyChanged.class, sigHandler);
mDbus.addSigHandler(SimManager.PropertyChanged.class, sigHandler);
mDbus.addSigHandler(org.ofono.Message.PropertyChanged.class, sigHandler);
initProps();
onModemChange(false); // initialize starting state
} catch (DBusException e) {
Expand Down Expand Up @@ -1324,19 +1326,16 @@ public boolean handleMessage(Message msg) {
}
}

private <T extends DBusSignal> void delegateSigHandler(Class<T> type) throws DBusException {
mDbus.addSigHandler(type, new DBusSigHandler<T>() {
@Override
public void handle(T s) {
try {
RilOfono.class.getMethod("handle", s.getClass()).invoke(RilOfono.this, s);
} catch (IllegalAccessException | NoSuchMethodException e) {
Rlog.e(TAG, "Unexpected exception while delegating dbus event", e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e.getCause());
}
private class DbusSignalHandler implements DBusSigHandler {
public void handle(DBusSignal s) {
try {
RilOfono.class.getMethod("handle", s.getClass()).invoke(RilOfono.this, s);
} catch (IllegalAccessException | NoSuchMethodException e) {
Rlog.e(TAG, "Unexpected exception while delegating dbus signal", e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e.getCause());
}
});
}
}

private void respondOk(String caller, Message response, Object o) {
Expand Down

0 comments on commit 74d23a3

Please sign in to comment.