netwerk/cache/nsICache.idl

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:17efa8382e55
1 /* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "nsISupports.idl"
8
9 typedef long nsCacheStoragePolicy;
10 typedef long nsCacheAccessMode;
11
12 /**
13 * nsICache is a namespace for various cache constants. It does not represent
14 * an actual object.
15 */
16 [scriptable, uuid(d6c67f38-b39a-4582-8a48-4c4f8a56dfd0)]
17 interface nsICache
18 {
19 /**
20 * Access Modes
21 *
22 *
23 * Mode Requested | Not Cached | Cached
24 * ------------------------------------------------------------------------
25 * READ | KEY_NOT_FOUND | NS_OK
26 * | Mode = NONE | Mode = READ
27 * | No Descriptor | Descriptor
28 * ------------------------------------------------------------------------
29 * WRITE | NS_OK | NS_OK (Cache service
30 * | Mode = WRITE | Mode = WRITE dooms existing
31 * | Descriptor | Descriptor cache entry)
32 * ------------------------------------------------------------------------
33 * READ_WRITE | NS_OK | NS_OK
34 * (1st req.) | Mode = WRITE | Mode = READ_WRITE
35 * | Descriptor | Descriptor
36 * ------------------------------------------------------------------------
37 * READ_WRITE | N/A | NS_OK
38 * (Nth req.) | | Mode = READ
39 * | | Descriptor
40 * ------------------------------------------------------------------------
41 *
42 *
43 * Access Requested:
44 *
45 * READ - I only want to READ, if there isn't an entry just fail
46 * WRITE - I have something new I want to write into the cache, make
47 * me a new entry and doom the old one, if any.
48 * READ_WRITE - I want to READ, but I'm willing to update an existing
49 * entry if necessary, or create a new one if none exists.
50 *
51 *
52 * Access Granted:
53 *
54 * NONE - No descriptor is provided. You get zilch. Nada. Nothing.
55 * READ - You can READ from this descriptor.
56 * WRITE - You must WRITE to this descriptor because the cache entry
57 * was just created for you.
58 * READ_WRITE - You can READ the descriptor to determine if it's valid,
59 * you may WRITE if it needs updating.
60 *
61 *
62 * Comments:
63 *
64 * If you think that you might need to modify cached data or meta data,
65 * then you must open a cache entry requesting WRITE access. Only one
66 * cache entry descriptor, per cache entry, will be granted WRITE access.
67 *
68 * Usually, you will request READ_WRITE access in order to first test the
69 * meta data and informational fields to determine if a write (ie. going
70 * to the net) may actually be necessary. If you determine that it is
71 * not, then you would mark the cache entry as valid (using MarkValid) and
72 * then simply read the data from the cache.
73 *
74 * A descriptor granted WRITE access has exclusive access to the cache
75 * entry up to the point at which it marks it as valid. Once the cache
76 * entry has been "validated", other descriptors with READ access may be
77 * opened to the cache entry.
78 *
79 * If you make a request for READ_WRITE access to a cache entry, the cache
80 * service will downgrade your access to READ if there is already a
81 * cache entry descriptor open with WRITE access.
82 *
83 * If you make a request for only WRITE access to a cache entry and another
84 * descriptor with WRITE access is currently open, then the existing cache
85 * entry will be 'doomed', and you will be given a descriptor (with WRITE
86 * access only) to a new cache entry.
87 *
88 */
89 const nsCacheAccessMode ACCESS_NONE = 0;
90 const nsCacheAccessMode ACCESS_READ = 1;
91 const nsCacheAccessMode ACCESS_WRITE = 2;
92 const nsCacheAccessMode ACCESS_READ_WRITE = 3;
93
94 /**
95 * Storage Policy
96 *
97 * The storage policy of a cache entry determines the device(s) to which
98 * it belongs. See nsICacheSession and nsICacheEntryDescriptor for more
99 * details.
100 *
101 * STORE_ANYWHERE - Allows the cache entry to be stored in any device.
102 * The cache service decides which cache device to use
103 * based on "some resource management calculation."
104 * STORE_IN_MEMORY - Requires the cache entry to reside in non-persistent
105 * storage (ie. typically in system RAM).
106 * STORE_ON_DISK - Requires the cache entry to reside in persistent
107 * storage (ie. typically on a system's hard disk).
108 * STORE_OFFLINE - Requires the cache entry to reside in persistent,
109 * reliable storage for offline use.
110 */
111 const nsCacheStoragePolicy STORE_ANYWHERE = 0;
112 const nsCacheStoragePolicy STORE_IN_MEMORY = 1;
113 const nsCacheStoragePolicy STORE_ON_DISK = 2;
114 // value 3 was used by STORE_ON_DISK_AS_FILE which was removed
115 const nsCacheStoragePolicy STORE_OFFLINE = 4;
116
117 /**
118 * All entries for a cache session are stored as streams of data or
119 * as objects. These constant my be used to specify the type of entries
120 * when calling nsICacheService::CreateSession().
121 */
122 const long NOT_STREAM_BASED = 0;
123 const long STREAM_BASED = 1;
124
125 /**
126 * The synchronous OpenCacheEntry() may be blocking or non-blocking. If a cache entry is
127 * waiting to be validated by another cache descriptor (so no new cache descriptors for that
128 * key can be created, OpenCacheEntry() will return NS_ERROR_CACHE_WAIT_FOR_VALIDATION in
129 * non-blocking mode. In blocking mode, it will wait until the cache entry for the key has
130 * been validated or doomed. If the cache entry is validated, then a descriptor for that
131 * entry will be created and returned. If the cache entry was doomed, then a descriptor
132 * will be created for a new cache entry for the key.
133 */
134 const long NON_BLOCKING = 0;
135 const long BLOCKING = 1;
136
137 /**
138 * Constant meaning no expiration time.
139 */
140 const unsigned long NO_EXPIRATION_TIME = 0xFFFFFFFF;
141 };
142

mercurial