Commit Graph

23 Commits (4dfd8b884775737f85783976958f4e976b65a5fb)

Author SHA1 Message Date
Tatsuhiro Tsujikawa 6f6a17bff7 Randomizer: Remove unused interfaces 2013-09-28 22:55:05 +09:00
Tatsuhiro Tsujikawa 986f69e5bf SimpleRandomizer: Use std::random 2013-09-28 22:00:37 +09:00
Tatsuhiro Tsujikawa 7f18494a8c SimpleRandmizer: Fix certain bits generated by getRandomBytes are always 0
This is because in Linux RAND_MAX is 2**31-1 and we used int32_t to
hold random number from random() and got each bytes. This means that
highest bit is always unset. In little endian system, every 4n-th (n
>=0) byte has highest bit is unset. To fix this, we just use lower 2
bytes of random().
2013-09-26 00:41:33 +09:00
Nils Maier 86c61fcf5b Make generateRandomBytes less biased. 2013-09-24 19:07:18 +02:00
Nils Maier d8f44ef4f6 Convert most 0/NULL pointers to nullptr
Courtesy of llvm cpp11-migrate 3.3
2013-08-20 21:28:24 +02:00
Tatsuhiro Tsujikawa da7400ef5c Return std::unique_ptr member as const ref
Returning raw pointer has a risk that it may be stolen by
std::shared_ptr in accident.
2013-06-26 23:56:43 +09:00
Tatsuhiro Tsujikawa 50dcd6394c Use std::unique_ptr instead of std::shared_ptr 2013-06-22 15:49:41 +09:00
Tatsuhiro Tsujikawa c330ac901d Fix mingw32 compile error 2013-06-22 01:23:08 +09:00
Tatsuhiro Tsujikawa 07d270c87e Require -std=c++11 and use std::shared_ptr instead of SharedHandle 2013-06-22 01:10:38 +09:00
Tatsuhiro Tsujikawa 8b0c701266 Removed trailing spaces 2012-10-01 23:52:22 +09:00
Tatsuhiro Tsujikawa ae393329f7 Fixed segmentation fault in open solaris in unit test.
This is due to the fact that the maximum value of random() in open
solaris is not RAND_MAX, but (2**31)-1.
2012-03-25 00:28:11 +09:00
Tatsuhiro Tsujikawa bf42505b7b MinGW32: Use CryptGenRandom() to generate random number.
MinGW32 lacks random(), so we use CryptGenRandom() as a replacement.
In the implementation, SimpleRandomizer::getRandomNumber() returns the
random number in range [0, INT32_MAX]. Thus,
simpleRandomizer::getMaxRandomNumber() returns INT32_MAX.
2011-08-18 18:03:06 +09:00
Tatsuhiro Tsujikawa fd3e7671a5 Use random() instead of rand(). 2011-08-11 02:34:04 +09:00
Tatsuhiro Tsujikawa 93e5dbed32 2010-11-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed SharedHandle::isNull(). Instead we added operator* and
	operator unspecified_bool_type. Removed use of WeakHandle and
	replaced with raw pointer.
2010-11-12 12:48:48 +00:00
Tatsuhiro Tsujikawa ca4940622c 2010-06-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Changed naming standards for class member variable: now it looks
	like var_ instead of _var.
2010-06-21 13:51:56 +00:00
Tatsuhiro Tsujikawa 7fc6c36370 2010-05-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Return const reference.
	* src/DefaultPieceStorage.h
	* src/DownloadContext.h
	* src/FeatureConfig.cc
	* src/FeatureConfig.h
	* src/OptionParser.cc
	* src/OptionParser.h
	* src/SimpleRandomizer.cc
	* src/SimpleRandomizer.h
2010-05-08 12:25:28 +00:00
Tatsuhiro Tsujikawa 4db349c1f3 2010-01-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Untabify. Fixed one line in copyright which is longer than 80
	columns.
	* src
	* test
2010-01-05 16:01:46 +00:00
Tatsuhiro Tsujikawa 9b71a5d0b5 2008-11-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Given custom random number generator to std::random_shuffle.
	* src/AnnounceList.cc
	* src/BtLeecherStateChoke.cc
	* src/BtSeederStateChoke.cc
	* src/DefaultBtRequestFactory.cc
	* src/MetalinkEntry.cc
	* src/RarestPieceSelector.cc
	* src/SimpleRandomizer.cc
	* src/SimpleRandomizer.h
2008-11-16 04:25:24 +00:00
Tatsuhiro Tsujikawa 7cbe5a7934 2008-09-02 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Moved implementation to SimpleRandomizer.cc from 
SimpleRandomizer.h.
	Added return value of getpid() to argument of srand() to achieve 
more
	randomized value.
	* src/SimpleRandomizer.cc
	* src/SimpleRandomizer.h
2008-09-02 14:11:59 +00:00
Tatsuhiro Tsujikawa 3505201f33 2008-04-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
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
2008-04-20 00:50:22 +00:00
Tatsuhiro Tsujikawa 1b7c198289 2008-02-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Removed "using namespace std;" from all sources. Appended std:: 
prefix to c++
	standard classes.
	Included string.h where mem* function are used.
2008-02-08 15:53:45 +00:00
Tatsuhiro Tsujikawa 5b2f8f036e 2007-02-06 Tatsuhiro Tsujikawa <tujikawa dot rednoah dot com>
To fix the bug that causes crash on Max OS X:
	
	* src/SimpleRandomizer.h
	(getInstance): Create new instance if the static variable is 
null.
	* src/SimpleRandomizer.cc
	(randomizer): Initialized to 0.
	* src/BitfieldManFactory.h
	(getNewFactory): Removed the call to setRandomizer().
	
	To fix the miscalculation of the range of checksum:
	
	* src/BitfieldMan.h
	(isBitSetOffsetRange): New function.
	* src/BitfieldMan.cc
	(isBitSetOffsetRange): New function.
	* src/SegmentMan.cc
	(tryChunkChecksumValidation): Use 
BitfieldMan::isBitSetOffsetRange().
	Use bitfield->getBlockLength() instead of segment.segmentLength.
2007-02-06 14:49:22 +00:00
Tatsuhiro Tsujikawa 9c3e8fbd9c 2006-12-24 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten a portion of bittorrent implementation:
	
	* src/BtMessageValidator.h: New class.
	* src/BtBitfieldMessageValidator.h: New class.
	* src/BtHandshakeMessageValidator.h: New class.
	* src/BtRequestMessageValidator.h: New class.
	* src/BtSuggestPieceMessageValidator.h: New class.
	* src/BtAllowedFastMessageValidator.h: New class.
	* src/BtRejectMessageValidator.h: New class.
	* src/BtCancelMessageValidator.h: New class.
	* src/BtPieceMessageValidator.h: New class.
	* src/BtHaveMessageValidator.h: New class.
	* src/BtEventListener.h: New class.
	* src/AbstractBtEventListener.h: New class.
	* src/BtEvent.h: New class.
	* src/BtChokingEvent.h: New class.
	* src/BtChokedEvent.h: New class.
	* src/BtCancelSendingPieceEvent.h: New class.
	* src/BtAbortOutstandingRequestEvent.h: New class.
	* src/Randomizer.h: New class.
	* src/SimpleRandomizer.h: New class.
	* src/BtMessage.h: New class.
	* src/AbstractBtMessage.h: New class.
	* src/SimpleBtMessage.h: New class.
	* src/BtHaveMessage.h: New class.
	* src/BtInterestedMessage.h: New class.
	* src/BtAllowedFastMessage.h: New class.
	* src/BtUnchokeMessage.h: New class.
	* src/BtCancelMessage.h: New class.
	* src/BtNotInterestedMessage.h: New class.
	* src/BtChokeMessage.h: New class.
	* src/BtHaveNoneMessage.h: New class.
	* src/BtHandshakeMessage.h: New class.
	* src/BtSuggestPieceMessage.h: New class.
	* src/BtHaveMessage.h: New class.
	* src/BtPieceMessage.h: New class.
	* src/BtHaveAllMessage.h: New class.
	* src/BtKeepAliveMessage.h: New class.
	* src/BtPortMessage.h: New class.
	* src/BtRejectMessage.h: New class.
	* src/BtBitfieldMessage.h: New class.
	* src/BtRequestMessage.h: New class.
	* src/DefaultBtRequestFactory.h: New class.
	* src/DefaultBtMessageReceiver.h: New class.
	* src/BtInteractive.h: New class.
	* src/BtMessageDispatcher.h: New class.
	* src/DefaultBtMessageDispatcher.h: New class.
	* src/DefaultBtInteractive.h: New class.
	* src/BitfieldManFactory.h: New class.
	* src/HandleRegistry.h: New class.
	* src/BtMessageFactory.h: New class.
	* src/BtMessageReceiver.h: New class.
	* src/DefaultBtMessageFactory.h: New class.
	* src/PeerObject.h: New class.
	* src/BtRequestFactory.h: New class.
2006-12-24 06:25:21 +00:00