From 3698b4680592accd47df25d904a5e240a2f43f5d Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 28 Feb 2008 17:40:47 +0000 Subject: 2008-02-29 Tatsuhiro Tsujikawa 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} --- src/MessageDigestHelper.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/MessageDigestHelper.h') 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 namespace aria2 { @@ -44,6 +45,8 @@ namespace aria2 { class BinaryStream; class MessageDigestHelper { +private: + static MessageDigestContext* _sha1Ctx; public: /** * Returns message digest in hexadecimal representation. @@ -58,6 +61,30 @@ public: return digest(algo, data.c_str(), data.size()); } + /** + * 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& 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& bs, + int64_t offset, int64_t length); + /** * Calculates message digest of file denoted by filename. * Returns message digest in hexadecimal representation. -- cgit