package cm.android.framework.ext.alarm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.os.IBinder;
import cm.android.framework.client.ipc.BinderFactory;
import cm.android.framework.client.ipc.LocalProxyUtils;
public final class TimerManager extends ITimerServer.Stub implements BinderFactory.IBinderProxy {
private static final Logger logger = LoggerFactory.getLogger("timer");
private ITimerServer timerServer;
@Override
public synchronized void register(String action, long period, long delay) {
if (timerServer == null) {
logger.error("register:timerServer = null");
return;
}
try {
ITimerServer server = LocalProxyUtils.genProxy(ITimerServer.class, timerServer);
server.register(action, period, delay);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
@Override
public synchronized void unregister(String action) {
if (timerServer == null) {
logger.error("unregister:timerServer = null");
return;
}
try {
ITimerServer server = LocalProxyUtils.genProxy(ITimerServer.class, timerServer);
server.unregister(action);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
@Override
public synchronized void bind(IBinder binder) {
timerServer = ITimerServer.Stub.asInterface(binder);
}
@Override
public synchronized void binderDied() {
timerServer = null;
}
}