[not part of build]

Changed OnDataSizeChanged() to OnDataSizeChange() and added a deltaSize parameter.  Added OnDataSizeChange() method on nsCacheService so we can grab the service lock and bind the entry if necessary.

Commented out the implementation of nsCacheEntryDescriptor::AsyncWrite(), since we are not planning to provide it.
This commit is contained in:
gordon%netscape.com 2001-03-01 05:01:43 +00:00
parent be17f5220d
commit 31f6b6c7a1
8 changed files with 50 additions and 15 deletions

View File

@ -50,7 +50,7 @@ public:
nsCacheAccessMode mode,
nsITransport **result ) = 0;
virtual nsresult OnDataSizeChanged( nsCacheEntry * entry ) = 0;
virtual nsresult OnDataSizeChange( nsCacheEntry * entry, PRInt32 deltaSize ) = 0;
//** need to define methods for enumerating entries
};

View File

@ -174,6 +174,11 @@ NS_IMETHODIMP nsCacheEntryDescriptor::SetDataSize(PRUint32 dataSize)
{
if (!mCacheEntry) return NS_ERROR_NOT_AVAILABLE;
//** check for signed/unsigned math errors
PRInt32 deltaSize = dataSize - mCacheEntry->DataSize();
// ignore return value, this call instance is advisory
(void) nsCacheService::GlobalInstance()->OnDataSizeChange(mCacheEntry, deltaSize);
mCacheEntry->SetDataSize(dataSize);
return NS_OK;
}
@ -436,6 +441,10 @@ nsCacheEntryDescriptor::AsyncWrite(nsIStreamProvider * provider,
PRUint32 flags,
nsIRequest ** result)
{
// we're not planning on implementing this
return NS_ERROR_NOT_IMPLEMENTED;
#if 0
NS_ENSURE_ARG_POINTER(result);
if (!mCacheEntry) return NS_ERROR_NOT_AVAILABLE;
if (!(mAccessGranted & nsICache::ACCESS_WRITE))
@ -450,4 +459,5 @@ nsCacheEntryDescriptor::AsyncWrite(nsIStreamProvider * provider,
}
return mTransport->AsyncWrite(provider, ctxt, offset, count, flags, result);
#endif
}

View File

@ -408,10 +408,28 @@ nsCacheService::DoomEntry_Internal(nsCacheEntry * entry)
return rv;
}
nsresult
nsCacheService::GetTransportForEntry(nsCacheEntry * entry,
nsCacheAccessMode mode,
nsITransport **result)
nsCacheService::OnDataSizeChange(nsCacheEntry * entry, PRInt32 deltaSize)
{
nsAutoLock lock(mCacheServiceLock);
nsresult rv = NS_OK;
nsCacheDevice * device = entry->CacheDevice();
if (!device) {
rv = BindEntry(entry);
if (NS_FAILED(rv)) return rv;
device = entry->CacheDevice();
}
return device->OnDataSizeChange(entry, deltaSize);
}
nsresult
nsCacheService::GetTransportForEntry(nsCacheEntry * entry,
nsCacheAccessMode mode,
nsITransport ** result)
{
nsAutoLock lock(mCacheServiceLock);
nsresult rv = NS_OK;
@ -423,7 +441,6 @@ nsCacheService::GetTransportForEntry(nsCacheEntry * entry,
device = entry->CacheDevice();
}
return device->GetTransportForEntry(entry, mode, result);
}

View File

@ -71,7 +71,12 @@ public:
* Methods called by nsCacheEntryDescriptor
*/
nsresult GetTransportForEntry(nsCacheEntry * entry, nsCacheAccessMode mode, nsITransport **result);
nsresult OnDataSizeChange(nsCacheEntry * entry, PRInt32 deltaSize);
nsresult GetTransportForEntry(nsCacheEntry * entry,
nsCacheAccessMode mode,
nsITransport ** result);
void CloseDescriptor(nsCacheEntryDescriptor * descriptor);

View File

@ -157,7 +157,7 @@ nsDiskCacheDevice::FindEntry(nsCString * key)
nsCacheEntry * entry = mInactiveEntries.GetEntry(key);
if (!entry) return nsnull;
//** need entry->UpdateFrom(ourEntry);
//** need nsCacheService::CreateEntry();
entry->MarkActive(); // so we don't evict it
//** find eviction element and move it to the tail of the queue
@ -175,7 +175,7 @@ nsDiskCacheDevice::DeactivateEntry(nsCacheEntry * entry)
if (!ourEntry)
return NS_ERROR_INVALID_POINTER;
//** need ourEntry->UpdateFrom(entry);
//** update disk entry from nsCacheEntry
//** MarkInactive(); // to make it evictable again
return NS_ERROR_NOT_IMPLEMENTED;
}
@ -277,8 +277,9 @@ nsDiskCacheDevice::GetTransportForEntry(nsCacheEntry * entry,
}
nsresult
nsDiskCacheDevice::OnDataSizeChanged(nsCacheEntry * entry)
nsDiskCacheDevice::OnDataSizeChange(nsCacheEntry * entry, PRInt32 deltaSize)
{
//** keep track of totals
return NS_ERROR_NOT_IMPLEMENTED;
}

View File

@ -48,7 +48,7 @@ public:
nsCacheAccessMode mode,
nsITransport ** result);
virtual nsresult OnDataSizeChanged(nsCacheEntry * entry);
virtual nsresult OnDataSizeChange(nsCacheEntry * entry, PRInt32 deltaSize);
void setCacheDirectory(nsILocalFile* directory);

View File

@ -108,9 +108,9 @@ nsMemoryCacheDevice::DoomEntry(nsCacheEntry * entry)
nsresult
nsMemoryCacheDevice::GetTransportForEntry( nsCacheEntry * entry,
nsMemoryCacheDevice::GetTransportForEntry( nsCacheEntry * entry,
nsCacheAccessMode mode,
nsITransport **transport )
nsITransport ** transport )
{
NS_ENSURE_ARG_POINTER(entry);
NS_ENSURE_ARG_POINTER(transport);
@ -136,10 +136,12 @@ nsMemoryCacheDevice::GetTransportForEntry( nsCacheEntry * entry,
}
}
nsresult
nsMemoryCacheDevice::OnDataSizeChanged( nsCacheEntry * entry )
nsMemoryCacheDevice::OnDataSizeChange( nsCacheEntry * entry, PRInt32 deltaSize)
{
return NS_ERROR_NOT_IMPLEMENTED;
//** keep track of totals
return NS_OK;
}
//** need methods for enumerating entries

View File

@ -48,7 +48,7 @@ public:
nsCacheAccessMode mode,
nsITransport **transport );
virtual nsresult OnDataSizeChanged( nsCacheEntry * entry );
virtual nsresult OnDataSizeChange( nsCacheEntry * entry, PRInt32 deltaSize );
private:
nsCacheEntryHashTable mInactiveEntries;