package tinygsn.services;
import android.app.AlarmManager;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import tinygsn.beans.DeliveryRequest;
import tinygsn.beans.StaticData;
import tinygsn.beans.Subscription;
import tinygsn.model.publishers.AbstractDataPublisher;
import tinygsn.model.subscribers.AbstractSubscriber;
import tinygsn.storage.db.SqliteStorageManager;
public class SubscriberService extends IntentService {
public SubscriberService() {
super("tinyGSN subscriber");
}
@Override
protected void onHandleIntent(Intent intent) {
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
SqliteStorageManager storage = new SqliteStorageManager();
long next_run = 10 * 60 * 1000L; //at least once every 10 minutes
try{
for (Subscription su : storage.getSubscribeList()) {
try {
if (su.isActive()) {
AbstractSubscriber asu = AbstractSubscriber.getSubscriber(su);
asu.runOnce();
next_run = Math.min(next_run, asu.getNextRun());
}
} catch (Exception e1) {
Log.e("SubscriberService", e1.getMessage());
}
}
} catch (Exception e) {
Log.e("SubscriberService", e.getMessage());
}
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + next_run, PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
}