Rewritten Exception class. Throw exception object, not its pointer and
catch by reference, so that remove problematic delete operator for
catched exception.
* src/Exception.cc
* src/Exception.h
* test/ExceptionTest.cc
* src/*: All files throwing/catching exception.
* test/*: All files throwing/catching exception.
Rewritten SharedHandle. Now copy constructor taking raw pointer
has
keyword explicit and SharedHandle's default constructor
initializes
its internal obj to null, old implementation initializes it
using
obj's default constructor.
To assign null, write SharedHandle<T> x(...); x.reset();
TODO: test/SharedHandleTest.cc needs more tests.
* src/SharedHandle.h
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}
Implemented BitTorrent/http/ftp integrated download.
I've rewritten lots of files and now some headers have forward
class declarations to reduce compile time.
The implementation is extremely alpha stage, I recommend to use this
for testing purpose only.