/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIMsgFolder; interface nsIArray; interface nsIMutableArray; [scriptable, uuid(7512f927-b8f0-48c4-b101-03e859e61281)] interface nsIAutoSyncState : nsISupports { /** * Auto-Sync states. * * ***WARNING***: If you change these, be sure to update stateStrings in * nsAutoSyncState.cpp. If you do not, out-of-bounds memory accesses may * happen. */ /** sync'd and no pending messages */ const long stCompletedIdle = 0; /** STATUS issued. Will check to see if any counts changed since last STATUS */ const long stStatusIssued = 1; /** * Status found new messages. Update should be issued next. Status most * likely was issued by non-autosync code (e.g., check other folders for * new messages). */ const long stUpdateNeeded = 2; /** Update issued. Will figure out if there are any bodies to download */ const long stUpdateIssued = 3; /** Message body download in progress */ const long stDownloadInProgress = 4; /** ready to download the next group of messages */ const long stReadyToDownload = 5; /** * Puts the download queue offset to its previous position. */ void rollback(); /** * Clears the download queue. Resets the offsets. */ void resetDownloadQ(); /** * Rollbacks the offset to the previous position and * changes the state to ready-to-download. */ void tryCurrentGroupAgain(in unsigned long aRetryCount); /** * Resets the retry counter. */ void resetRetryCounter(); /** * Tests whether the given folder has the same imap server. */ boolean isSibling(in nsIAutoSyncState aAnotherStateObj); /** * Update the folder to find new message headers to download */ void updateFolder(); /** * Downloads the bodies of the given messages from the server. */ void downloadMessagesForOffline(in nsIArray aMessageList); /** * Populates the given array with the keys of the messages that will * be downloaded next. * * @param aSuggestedGroupSizeLimit suggested size per group in bytes * @param aActualGroupSize total size of the messages in bytes in the group */ nsIMutableArray getNextGroupOfMessages(in unsigned long aSuggestedGroupSizeLimit, out unsigned long aActualGroupSize); /** * Iterates through the existing headers of the folder to find * the messages not downloaded yet. * * @param aNumberOfHeadersToProcess number of headers to be processed * at this pass * * @return the number of headers left to process */ unsigned long processExistingHeaders(in unsigned long aNumberOfHeadersToProcess); /** * Last time the existing headers are completely processed. */ [noscript]readonly attribute PRTime lastSyncTime; /** * Last time the owner folder is updated. */ [noscript]attribute PRTime lastUpdateTime; /** * Download operation state. */ attribute long state; /** * Number of messages waiting to be downloaded. */ readonly attribute long pendingMessageCount; /** * Total number of messages in the download queue. */ readonly attribute long totalMessageCount; /** * The folder this auto-sync object is related to. */ readonly attribute nsIMsgFolder ownerFolder; };