summaryrefslogtreecommitdiff
path: root/src/MessageDigestHelper.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-28 17:40:47 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-28 17:40:47 +0000
commit3698b4680592accd47df25d904a5e240a2f43f5d (patch)
tree090a1264805576e95077262acdaf5e2bdc1cdb7b /src/MessageDigestHelper.h
parenta1458a1642b6582c0b316e094e5008a10b4963a8 (diff)
2008-02-29 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Create MessageDigestHelper::staticSHA1DigestInit() which uses statically declared sha1 MessageDigestContext. * src/BtPieceMessage.cc: Use staticSHA1DigestInit() to avoid initialization of short-lived MessageDigestContext. * src/MessageDigestHelper.{h, cc} * src/main.cc Now DownloadCommand has a reference to MessageDigestContext to avoid the initialization of MessageDigestContext every time in validating chunk checksum. * src/DownloadCommand.{h, cc}
Diffstat (limited to 'src/MessageDigestHelper.h')
-rw-r--r--src/MessageDigestHelper.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/MessageDigestHelper.h b/src/MessageDigestHelper.h
index d8c30ffd..54cfa028 100644
--- a/src/MessageDigestHelper.h
+++ b/src/MessageDigestHelper.h
@@ -37,6 +37,7 @@
#include "common.h"
#include "SharedHandle.h"
+#include "messageDigest.h"
#include <string>
namespace aria2 {
@@ -44,6 +45,8 @@ namespace aria2 {
class BinaryStream;
class MessageDigestHelper {
+private:
+ static MessageDigestContext* _sha1Ctx;
public:
/**
* Returns message digest in hexadecimal representation.
@@ -59,6 +62,30 @@ public:
}
/**
+ * staticSHA1DigestInit(), staticSHA1DigestFree(), staticSHA1Digest()
+ * use statically declared MessageDigestContext _sha1Ctx.
+ */
+ /**
+ * Initializes _sha1Ctx
+ */
+ static void staticSHA1DigestInit();
+
+ /**
+ * Frees allocated resources for _sha1Ctx
+ */
+ static void staticSHA1DigestFree();
+
+ static std::string staticSHA1Digest(const SharedHandle<BinaryStream>& bs,
+ int64_t offset, int64_t length);
+
+ /**
+ * ctx must be initialized or reseted before calling this function.
+ */
+ static std::string digest(MessageDigestContext* ctx,
+ const SharedHandle<BinaryStream>& bs,
+ int64_t offset, int64_t length);
+
+ /**
* Calculates message digest of file denoted by filename.
* Returns message digest in hexadecimal representation.
* Digest algorithm is specified by algo.