summaryrefslogtreecommitdiffstats
path: root/toolkit/components/url-classifier/nsCheckSummedOutputStream.h
diff options
context:
space:
mode:
authorThomas Nguyen <tnguyen@mozilla.com>2017-05-19 13:17:07 +0800
committerwolfbeast <mcwerewolf@gmail.com>2018-04-19 11:33:20 +0200
commit09bbda15b26b806c3d63ec5fa4a1f3431c18d96d (patch)
tree25990a4691873435231e0b731ae9543d47663404 /toolkit/components/url-classifier/nsCheckSummedOutputStream.h
parent0b5cb08596f57d5c56003734e6b35aca26e71fad (diff)
downloadUXP-09bbda15b26b806c3d63ec5fa4a1f3431c18d96d.tar
UXP-09bbda15b26b806c3d63ec5fa4a1f3431c18d96d.tar.gz
UXP-09bbda15b26b806c3d63ec5fa4a1f3431c18d96d.tar.lz
UXP-09bbda15b26b806c3d63ec5fa4a1f3431c18d96d.tar.xz
UXP-09bbda15b26b806c3d63ec5fa4a1f3431c18d96d.zip
Bug 1361699 - Add buffer when writing hashstore to file. r=gcp, r=mcmanus, a=RyanVM
We write a lot of 4-bytes prefixes to file which call many system calls. We should use a buffer and only write to file if the buffer is full or finish writing. nsIBufferedOutputStream is a good candidate to do that MozReview-Commit-ID: CzGOd7iXVTv --HG-- extra : source : 8f2b4efc5f0d3191a7e80d9324933621e111b44a
Diffstat (limited to 'toolkit/components/url-classifier/nsCheckSummedOutputStream.h')
-rw-r--r--toolkit/components/url-classifier/nsCheckSummedOutputStream.h24
1 files changed, 14 insertions, 10 deletions
diff --git a/toolkit/components/url-classifier/nsCheckSummedOutputStream.h b/toolkit/components/url-classifier/nsCheckSummedOutputStream.h
index c2fe26b5f..b72c7da86 100644
--- a/toolkit/components/url-classifier/nsCheckSummedOutputStream.h
+++ b/toolkit/components/url-classifier/nsCheckSummedOutputStream.h
@@ -12,25 +12,27 @@
#include "nsICryptoHash.h"
#include "nsNetCID.h"
#include "nsString.h"
-#include "../../../netwerk/base/nsFileStreams.h"
#include "nsToolkitCompsCID.h"
+#include "../../../netwerk/base/nsBufferedStreams.h"
+#include "prio.h"
-class nsCheckSummedOutputStream : public nsSafeFileOutputStream
+class nsCheckSummedOutputStream : public nsBufferedOutputStream
{
public:
NS_DECL_ISUPPORTS_INHERITED
// Size of MD5 hash in bytes
static const uint32_t CHECKSUM_SIZE = 16;
+ static const uint32_t MAX_BUFFER_SIZE = 64 * 1024;
nsCheckSummedOutputStream() {}
NS_IMETHOD Finish() override;
NS_IMETHOD Write(const char *buf, uint32_t count, uint32_t *result) override;
- NS_IMETHOD Init(nsIFile* file, int32_t ioFlags, int32_t perm, int32_t behaviorFlags) override;
+ NS_IMETHOD Init(nsIOutputStream* stream, uint32_t bufferSize) override;
protected:
- virtual ~nsCheckSummedOutputStream() { nsSafeFileOutputStream::Close(); }
+ virtual ~nsCheckSummedOutputStream() { nsBufferedOutputStream::Close(); }
nsCOMPtr<nsICryptoHash> mHash;
nsCString mCheckSum;
@@ -39,13 +41,15 @@ protected:
// returns a file output stream which can be QI'ed to nsIFileOutputStream.
inline nsresult
NS_NewCheckSummedOutputStream(nsIOutputStream **result,
- nsIFile *file,
- int32_t ioFlags = -1,
- int32_t perm = -1,
- int32_t behaviorFlags = 0)
+ nsIFile *file)
{
- nsCOMPtr<nsIFileOutputStream> out = new nsCheckSummedOutputStream();
- nsresult rv = out->Init(file, ioFlags, perm, behaviorFlags);
+ nsCOMPtr<nsIOutputStream> localOutFile;
+ nsresult rv = NS_NewSafeLocalFileOutputStream(getter_AddRefs(localOutFile), file,
+ PR_WRONLY | PR_TRUNCATE | PR_CREATE_FILE);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIBufferedOutputStream> out = new nsCheckSummedOutputStream();
+ rv = out->Init(localOutFile, nsCheckSummedOutputStream::CHECKSUM_SIZE);
if (NS_SUCCEEDED(rv)) {
out.forget(result);
}