void ActivityBuilderFactory::BuildScheduledSync(ActivityBuilder &builder, int intervalMins) { // activity to setup watch MojString name; GetScheduledSyncActivityName(name); // description of watch MojString desc; GetScheduledSyncActivityDesc(desc); // sync interval in seconds int intervalSecs = MinsToSecs(intervalMins); builder.SetName(name.data()); builder.SetDescription(desc.data()); builder.SetPersist(true); builder.SetExplicit(true); builder.SetRequiresInternet(false); builder.SetSyncInterval(0, intervalSecs); builder.SetImmediate(true, "low"); // setup parameters (to be sent when trigger is called) MojObject params; MojErr err = params.put(PopAccountAdapter::ACCOUNT_ID, m_accountId); ErrorToException(err); builder.SetCallback(SCHEDULED_SYNC_CALLBACK, params); // put accountId in metadata MojObject metadata; err = metadata.put("accountId", m_accountId); ErrorToException(err); builder.SetMetadata(metadata); }
void ImapActivityFactory::BuildScheduledSync(ActivityBuilder& ab, const MojObject& accountId, const MojObject& folderId, int seconds, bool requireFair) { MojErr err; ab.SetName( GetScheduledSyncName(accountId, folderId) ); MojString desc; err = desc.format("Scheduled sync every %d minutes", seconds/60); ErrorToException(err); ab.SetDescription(desc.data()); ab.SetExplicit(true); ab.SetPersist(true); ab.SetImmediate(true, "low"); SetNetworkRequirements(ab, requireFair); // Metadata MojObject metadata; SetMetadata(metadata, SCHEDULED_SYNC_NAME, accountId, folderId); ab.SetMetadata(metadata); // Wakeup ab.SetSyncInterval(0, seconds); // Callback MojObject params; err = params.put("accountId", accountId); ErrorToException(err); ab.SetCallback(SCHEDULED_SYNC_CALLBACK, params); }
void ImapActivityFactory::BuildSyncRetry(ActivityBuilder& ab, const MojObject& accountId, const MojObject& folderId, int seconds, const std::string& reason) { MojErr err; ab.SetName( GetSyncRetryName(accountId, folderId) ); MojString desc; err = desc.format("Retry sync after %d seconds", seconds); ErrorToException(err); ab.SetDescription(desc.data()); ab.SetExplicit(true); ab.SetPersist(true); ab.SetImmediate(true, "low"); SetNetworkRequirements(ab, seconds <= 5 * 60); // Metadata MojObject metadata; SetMetadata(metadata, SYNC_RETRY_NAME, accountId, folderId); ab.SetMetadata(metadata); // Wakeup ab.SetSyncInterval(seconds, 0); // Callback MojObject params; err = params.put("accountId", accountId); ErrorToException(err); err = params.put("folderId", folderId); ErrorToException(err); MojObject retry; if(!reason.empty()) { err = retry.putString("reason", reason.c_str()); ErrorToException(err); } err = retry.put("interval", seconds); ErrorToException(err); err = params.put("retry", retry); ErrorToException(err); ab.SetCallback(SYNC_RETRY_CALLBACK, params); }
void ActivityBuilderFactory::BuildFolderRetrySync(ActivityBuilder &builder, const MojObject& folderId, int currInterval) { // activity to setup watch MojString name; GetFolderRetrySyncActivityName(name, folderId); // description of watch MojString desc; GetFolderRetrySyncActivityDesc(desc, folderId); // retry interval in seconds int nextRetryInterval = GetNextRetryIntervalMins(currInterval); int intervalSecs = MinsToSecs(nextRetryInterval); builder.SetName(name.data()); builder.SetDescription(desc.data()); builder.SetPersist(true); builder.SetExplicit(true); builder.SetRequiresInternet(false); builder.SetImmediate(true, "low"); builder.SetSyncInterval(0, intervalSecs); // setup parameters (to be sent when trigger is called) MojObject params; MojErr err = params.put(PopAccountAdapter::ACCOUNT_ID, m_accountId); ErrorToException(err); err = params.put("folderId", folderId); ErrorToException(err); err = params.put("lastRetryInterval", nextRetryInterval); ErrorToException(err); builder.SetCallback(FOLDER_RETRY_SYNC_CALLBACK, params); // put accountId in metadata MojObject metadata; err = metadata.put("accountId", m_accountId); ErrorToException(err); builder.SetMetadata(metadata); }