From 7e1b7ad450d35acc506c59fd32d94343581390d8 Mon Sep 17 00:00:00 2001 From: "gordon%netscape.com" Date: Thu, 1 Mar 2001 20:06:16 +0000 Subject: [PATCH] [not part of build] Mark cache entry meta data dirty when key/value pair added. --- netwerk/cache/src/nsCacheEntry.cpp | 6 +++++- netwerk/cache/src/nsCacheMetaData.cpp | 22 ++++++++++------------ netwerk/cache/src/nsCacheMetaData.h | 4 ++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/netwerk/cache/src/nsCacheEntry.cpp b/netwerk/cache/src/nsCacheEntry.cpp index 875fdc83c5ce..305533e13175 100644 --- a/netwerk/cache/src/nsCacheEntry.cpp +++ b/netwerk/cache/src/nsCacheEntry.cpp @@ -109,7 +109,11 @@ nsCacheEntry::SetMetaDataElement( const nsAReadableCString& key, if (!mMetaData) return NS_ERROR_OUT_OF_MEMORY; } - return mMetaData->SetElement(&key, &value); + nsresult rv = mMetaData->SetElement(key, value); + if (NS_SUCCEEDED(rv)) + MarkMetaDataDirty(); + + return rv; } diff --git a/netwerk/cache/src/nsCacheMetaData.cpp b/netwerk/cache/src/nsCacheMetaData.cpp index 6c25906720b5..b1b090c408c0 100644 --- a/netwerk/cache/src/nsCacheMetaData.cpp +++ b/netwerk/cache/src/nsCacheMetaData.cpp @@ -84,31 +84,29 @@ nsCacheMetaData::GetElement(const nsAReadableCString * key) nsresult -nsCacheMetaData::SetElement(const nsAReadableCString * key, - const nsAReadableCString * value) +nsCacheMetaData::SetElement(const nsAReadableCString& key, + const nsAReadableCString& value) { nsCacheMetaDataHashTableEntry * metaEntry; NS_ASSERTION(initialized, "nsCacheMetaDataHashTable not initialized"); - if (!key) return NS_ERROR_NULL_POINTER; - //** should value == nsnull remove the key? + + //** should empty value remove the key? metaEntry = (nsCacheMetaDataHashTableEntry *) - PL_DHashTableOperate(&table, key, PL_DHASH_ADD); + PL_DHashTableOperate(&table, &key, PL_DHASH_ADD); if (metaEntry->key == nsnull) { - metaEntry->key = new nsCString(*key); + metaEntry->key = new nsCString(key); if (metaEntry->key == nsnull) return NS_ERROR_OUT_OF_MEMORY; } if (metaEntry->value != nsnull) delete metaEntry->value; - if (value) { - metaEntry->value = new nsCString(*value); - if (metaEntry->value == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - } else { - metaEntry->value = nsnull; + metaEntry->value = new nsCString(value); + if (metaEntry->value == nsnull) { + //** remove key? + return NS_ERROR_OUT_OF_MEMORY; } return NS_OK; diff --git a/netwerk/cache/src/nsCacheMetaData.h b/netwerk/cache/src/nsCacheMetaData.h index cfdab5c30a21..6b7d1af594eb 100644 --- a/netwerk/cache/src/nsCacheMetaData.h +++ b/netwerk/cache/src/nsCacheMetaData.h @@ -53,8 +53,8 @@ public: nsAReadableCString * GetElement(const nsAReadableCString * key); - nsresult SetElement(const nsAReadableCString * key, - const nsAReadableCString * value); + nsresult SetElement(const nsAReadableCString& key, + const nsAReadableCString& value); nsresult GetKeyValueArray(nsCacheMetaDataKeyValuePair ** array, PRUint32 * count);