summaryrefslogtreecommitdiffstats
path: root/netwerk/cache2/nsICachePurgeLock.idl
blob: a0937a8922488b1b34fdaa2adebe5c493a917664 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* 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 nsIFile;

/**
 * This object is a wrapper of MultiInstanceLock.
 * It's intended to be used to ensure exclusive access to folders being
 * deleted by the purgeHTTPCache background task.
 */
[scriptable,uuid(8abb21e3-c6a0-4b4d-9333-cc0d72f2c23b)]
interface nsICachePurgeLock : nsISupports {
    /**
     * Initializes the lock using the profile name and the current process's
     * path.
     * Will throw if a lock was already acquired successfully.
     */
    void lock(in AUTF8String profileName);

    /**
     * Returns true if another instance also holds the lock.
     * Throws if called before lock was called, or after unlock was called.
     */
    bool isOtherInstanceRunning();

    /**
     * Releases the lock.
     * This object may be locked again, potentially using a different path
     * after unlocking.
     */
    void unlock();

    /**
     * Returns the file used to guarantee single access to a resource.
     * This method is used to remove the lock file when no longer necessary.
     */
    nsIFile getLockFile(in AUTF8String profileName);
};