mirror of https://github.com/aria2/aria2
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Renamed member variables in SegmentMan * src/RequestGroup.cc * src/RequestGroupMan.cc * src/SegmentMan.cc * src/SegmentMan.h * src/XmlRpcMethodImpl.cc * test/BtDependencyTest.ccpull/1/head
parent
95f5c58903
commit
8d6378b675
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Renamed member variables in SegmentMan
|
||||||
|
* src/RequestGroup.cc
|
||||||
|
* src/RequestGroupMan.cc
|
||||||
|
* src/SegmentMan.cc
|
||||||
|
* src/SegmentMan.h
|
||||||
|
* src/XmlRpcMethodImpl.cc
|
||||||
|
* test/BtDependencyTest.cc
|
||||||
|
|
||||||
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Renamed member variables.
|
Renamed member variables.
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
#include "SocketCore.h"
|
#include "SocketCore.h"
|
||||||
#include "SimpleRandomizer.h"
|
#include "SimpleRandomizer.h"
|
||||||
#include "ServerStatMan.h"
|
#include "ServerStatMan.h"
|
||||||
|
#include "Segment.h"
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
# include "CheckIntegrityCommand.h"
|
# include "CheckIntegrityCommand.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
#include "StringFormat.h"
|
#include "StringFormat.h"
|
||||||
#include "FileAllocationEntry.h"
|
#include "FileAllocationEntry.h"
|
||||||
#include "CheckIntegrityEntry.h"
|
#include "CheckIntegrityEntry.h"
|
||||||
|
#include "Segment.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
|
|
@ -55,16 +55,11 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
SegmentEntry::SegmentEntry(cuid_t cuid, const SharedHandle<Segment>& segment):
|
|
||||||
cuid(cuid), segment(segment) {}
|
|
||||||
|
|
||||||
SegmentEntry::~SegmentEntry() {}
|
|
||||||
|
|
||||||
SegmentMan::SegmentMan(const Option* option,
|
SegmentMan::SegmentMan(const Option* option,
|
||||||
const SharedHandle<DownloadContext>& downloadContext,
|
const SharedHandle<DownloadContext>& downloadContext,
|
||||||
const PieceStorageHandle& pieceStorage):
|
const PieceStorageHandle& pieceStorage):
|
||||||
_option(option),
|
_option(option),
|
||||||
logger(LogFactory::getInstance()),
|
_logger(LogFactory::getInstance()),
|
||||||
_downloadContext(downloadContext),
|
_downloadContext(downloadContext),
|
||||||
_pieceStorage(pieceStorage),
|
_pieceStorage(pieceStorage),
|
||||||
_lastPeerStatDlspdMapUpdated(0),
|
_lastPeerStatDlspdMapUpdated(0),
|
||||||
|
@ -88,7 +83,8 @@ bool SegmentMan::downloadFinished() const
|
||||||
|
|
||||||
void SegmentMan::init()
|
void SegmentMan::init()
|
||||||
{
|
{
|
||||||
// TODO Do we have to do something about DownloadContext and PieceStorage here?
|
// TODO Do we have to do something about DownloadContext and
|
||||||
|
// PieceStorage here?
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t SegmentMan::getTotalLength() const
|
uint64_t SegmentMan::getTotalLength() const
|
||||||
|
@ -117,9 +113,9 @@ SharedHandle<Segment> SegmentMan::checkoutSegment
|
||||||
if(piece.isNull()) {
|
if(piece.isNull()) {
|
||||||
return SharedHandle<Segment>();
|
return SharedHandle<Segment>();
|
||||||
}
|
}
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("Attach segment#%d to CUID#%s.",
|
_logger->debug("Attach segment#%d to CUID#%s.",
|
||||||
piece->getIndex(), util::itos(cuid).c_str());
|
piece->getIndex(), util::itos(cuid).c_str());
|
||||||
}
|
}
|
||||||
SharedHandle<Segment> segment;
|
SharedHandle<Segment> segment;
|
||||||
if(piece->getLength() == 0) {
|
if(piece->getLength() == 0) {
|
||||||
|
@ -128,22 +124,22 @@ SharedHandle<Segment> SegmentMan::checkoutSegment
|
||||||
segment.reset(new PiecedSegment(_downloadContext->getPieceLength(), piece));
|
segment.reset(new PiecedSegment(_downloadContext->getPieceLength(), piece));
|
||||||
}
|
}
|
||||||
SegmentEntryHandle entry(new SegmentEntry(cuid, segment));
|
SegmentEntryHandle entry(new SegmentEntry(cuid, segment));
|
||||||
usedSegmentEntries.push_back(entry);
|
_usedSegmentEntries.push_back(entry);
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("index=%d, length=%d, segmentLength=%d, writtenLength=%d",
|
_logger->debug("index=%d, length=%d, segmentLength=%d, writtenLength=%d",
|
||||||
segment->getIndex(),
|
segment->getIndex(),
|
||||||
segment->getLength(),
|
segment->getLength(),
|
||||||
segment->getSegmentLength(),
|
segment->getSegmentLength(),
|
||||||
segment->getWrittenLength());
|
segment->getWrittenLength());
|
||||||
}
|
}
|
||||||
if(piece->getLength() > 0) {
|
if(piece->getLength() > 0) {
|
||||||
std::map<size_t, size_t>::iterator positr =
|
std::map<size_t, size_t>::iterator positr =
|
||||||
_segmentWrittenLengthMemo.find(segment->getIndex());
|
_segmentWrittenLengthMemo.find(segment->getIndex());
|
||||||
if(positr != _segmentWrittenLengthMemo.end()) {
|
if(positr != _segmentWrittenLengthMemo.end()) {
|
||||||
const size_t writtenLength = (*positr).second;
|
const size_t writtenLength = (*positr).second;
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("writtenLength(in memo)=%d, writtenLength=%d",
|
_logger->debug("writtenLength(in memo)=%d, writtenLength=%d",
|
||||||
writtenLength, segment->getWrittenLength());
|
writtenLength, segment->getWrittenLength());
|
||||||
}
|
}
|
||||||
// If the difference between cached writtenLength and segment's
|
// If the difference between cached writtenLength and segment's
|
||||||
// writtenLength is less than one block, we assume that these
|
// writtenLength is less than one block, we assume that these
|
||||||
|
@ -160,8 +156,8 @@ SharedHandle<Segment> SegmentMan::checkoutSegment
|
||||||
void SegmentMan::getInFlightSegment
|
void SegmentMan::getInFlightSegment
|
||||||
(std::vector<SharedHandle<Segment> >& segments, cuid_t cuid)
|
(std::vector<SharedHandle<Segment> >& segments, cuid_t cuid)
|
||||||
{
|
{
|
||||||
for(SegmentEntries::const_iterator itr = usedSegmentEntries.begin(),
|
for(SegmentEntries::const_iterator itr = _usedSegmentEntries.begin(),
|
||||||
eoi = usedSegmentEntries.end(); itr != eoi; ++itr) {
|
eoi = _usedSegmentEntries.end(); itr != eoi; ++itr) {
|
||||||
const SegmentEntryHandle& segmentEntry = *itr;
|
const SegmentEntryHandle& segmentEntry = *itr;
|
||||||
if(segmentEntry->cuid == cuid) {
|
if(segmentEntry->cuid == cuid) {
|
||||||
segments.push_back(segmentEntry->segment);
|
segments.push_back(segmentEntry->segment);
|
||||||
|
@ -220,8 +216,8 @@ SharedHandle<Segment> SegmentMan::getCleanSegmentIfOwnerIsIdle
|
||||||
if(index > 0 && _downloadContext->getNumPieces() <= index) {
|
if(index > 0 && _downloadContext->getNumPieces() <= index) {
|
||||||
return SharedHandle<Segment>();
|
return SharedHandle<Segment>();
|
||||||
}
|
}
|
||||||
for(SegmentEntries::const_iterator itr = usedSegmentEntries.begin(),
|
for(SegmentEntries::const_iterator itr = _usedSegmentEntries.begin(),
|
||||||
eoi = usedSegmentEntries.end(); itr != eoi; ++itr) {
|
eoi = _usedSegmentEntries.end(); itr != eoi; ++itr) {
|
||||||
const SharedHandle<SegmentEntry>& segmentEntry = *itr;
|
const SharedHandle<SegmentEntry>& segmentEntry = *itr;
|
||||||
if(segmentEntry->segment->getIndex() == index) {
|
if(segmentEntry->segment->getIndex() == index) {
|
||||||
if(segmentEntry->cuid == cuid) {
|
if(segmentEntry->cuid == cuid) {
|
||||||
|
@ -245,24 +241,24 @@ SharedHandle<Segment> SegmentMan::getCleanSegmentIfOwnerIsIdle
|
||||||
|
|
||||||
void SegmentMan::cancelSegment(const SharedHandle<Segment>& segment)
|
void SegmentMan::cancelSegment(const SharedHandle<Segment>& segment)
|
||||||
{
|
{
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("Canceling segment#%d", segment->getIndex());
|
_logger->debug("Canceling segment#%d", segment->getIndex());
|
||||||
}
|
}
|
||||||
_pieceStorage->cancelPiece(segment->getPiece());
|
_pieceStorage->cancelPiece(segment->getPiece());
|
||||||
_segmentWrittenLengthMemo[segment->getIndex()] = segment->getWrittenLength();
|
_segmentWrittenLengthMemo[segment->getIndex()] = segment->getWrittenLength();
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("Memorized segment index=%u, writtenLength=%u",
|
_logger->debug("Memorized segment index=%u, writtenLength=%u",
|
||||||
segment->getIndex(), segment->getWrittenLength());
|
segment->getIndex(), segment->getWrittenLength());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SegmentMan::cancelSegment(cuid_t cuid) {
|
void SegmentMan::cancelSegment(cuid_t cuid) {
|
||||||
for(SegmentEntries::iterator itr = usedSegmentEntries.begin(),
|
for(SegmentEntries::iterator itr = _usedSegmentEntries.begin(),
|
||||||
eoi = usedSegmentEntries.end(); itr != eoi;) {
|
eoi = _usedSegmentEntries.end(); itr != eoi;) {
|
||||||
if((*itr)->cuid == cuid) {
|
if((*itr)->cuid == cuid) {
|
||||||
cancelSegment((*itr)->segment);
|
cancelSegment((*itr)->segment);
|
||||||
itr = usedSegmentEntries.erase(itr);
|
itr = _usedSegmentEntries.erase(itr);
|
||||||
eoi = usedSegmentEntries.end();
|
eoi = _usedSegmentEntries.end();
|
||||||
} else {
|
} else {
|
||||||
++itr;
|
++itr;
|
||||||
}
|
}
|
||||||
|
@ -272,12 +268,12 @@ void SegmentMan::cancelSegment(cuid_t cuid) {
|
||||||
void SegmentMan::cancelSegment
|
void SegmentMan::cancelSegment
|
||||||
(cuid_t cuid, const SharedHandle<Segment>& segment)
|
(cuid_t cuid, const SharedHandle<Segment>& segment)
|
||||||
{
|
{
|
||||||
for(SegmentEntries::iterator itr = usedSegmentEntries.begin(),
|
for(SegmentEntries::iterator itr = _usedSegmentEntries.begin(),
|
||||||
eoi = usedSegmentEntries.end(); itr != eoi;) {
|
eoi = _usedSegmentEntries.end(); itr != eoi;) {
|
||||||
if((*itr)->cuid == cuid && (*itr)->segment == segment) {
|
if((*itr)->cuid == cuid && (*itr)->segment == segment) {
|
||||||
cancelSegment((*itr)->segment);
|
cancelSegment((*itr)->segment);
|
||||||
itr = usedSegmentEntries.erase(itr);
|
itr = _usedSegmentEntries.erase(itr);
|
||||||
//eoi = usedSegmentEntries.end();
|
//eoi = _usedSegmentEntries.end();
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
++itr;
|
++itr;
|
||||||
|
@ -288,11 +284,11 @@ void SegmentMan::cancelSegment
|
||||||
void SegmentMan::cancelAllSegments()
|
void SegmentMan::cancelAllSegments()
|
||||||
{
|
{
|
||||||
for(std::deque<SharedHandle<SegmentEntry> >::iterator itr =
|
for(std::deque<SharedHandle<SegmentEntry> >::iterator itr =
|
||||||
usedSegmentEntries.begin(), eoi = usedSegmentEntries.end();
|
_usedSegmentEntries.begin(), eoi = _usedSegmentEntries.end();
|
||||||
itr != eoi; ++itr) {
|
itr != eoi; ++itr) {
|
||||||
cancelSegment((*itr)->segment);
|
cancelSegment((*itr)->segment);
|
||||||
}
|
}
|
||||||
usedSegmentEntries.clear();
|
_usedSegmentEntries.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SegmentMan::eraseSegmentWrittenLengthMemo()
|
void SegmentMan::eraseSegmentWrittenLengthMemo()
|
||||||
|
@ -316,13 +312,13 @@ bool SegmentMan::completeSegment
|
||||||
(cuid_t cuid, const SharedHandle<Segment>& segment) {
|
(cuid_t cuid, const SharedHandle<Segment>& segment) {
|
||||||
_pieceStorage->completePiece(segment->getPiece());
|
_pieceStorage->completePiece(segment->getPiece());
|
||||||
_pieceStorage->advertisePiece(cuid, segment->getPiece()->getIndex());
|
_pieceStorage->advertisePiece(cuid, segment->getPiece()->getIndex());
|
||||||
SegmentEntries::iterator itr = std::find_if(usedSegmentEntries.begin(),
|
SegmentEntries::iterator itr = std::find_if(_usedSegmentEntries.begin(),
|
||||||
usedSegmentEntries.end(),
|
_usedSegmentEntries.end(),
|
||||||
FindSegmentEntry(segment));
|
FindSegmentEntry(segment));
|
||||||
if(itr == usedSegmentEntries.end()) {
|
if(itr == _usedSegmentEntries.end()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
usedSegmentEntries.erase(itr);
|
_usedSegmentEntries.erase(itr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -341,20 +337,20 @@ uint64_t SegmentMan::getDownloadLength() const {
|
||||||
|
|
||||||
void SegmentMan::registerPeerStat(const SharedHandle<PeerStat>& peerStat)
|
void SegmentMan::registerPeerStat(const SharedHandle<PeerStat>& peerStat)
|
||||||
{
|
{
|
||||||
for(std::vector<SharedHandle<PeerStat> >::iterator i = peerStats.begin(),
|
for(std::vector<SharedHandle<PeerStat> >::iterator i = _peerStats.begin(),
|
||||||
eoi = peerStats.end(); i != eoi; ++i) {
|
eoi = _peerStats.end(); i != eoi; ++i) {
|
||||||
if((*i)->getStatus() == PeerStat::IDLE) {
|
if((*i)->getStatus() == PeerStat::IDLE) {
|
||||||
*i = peerStat;
|
*i = peerStat;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
peerStats.push_back(peerStat);
|
_peerStats.push_back(peerStat);
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedHandle<PeerStat> SegmentMan::getPeerStat(cuid_t cuid) const
|
SharedHandle<PeerStat> SegmentMan::getPeerStat(cuid_t cuid) const
|
||||||
{
|
{
|
||||||
for(std::vector<SharedHandle<PeerStat> >::const_iterator i =
|
for(std::vector<SharedHandle<PeerStat> >::const_iterator i =
|
||||||
peerStats.begin(), eoi = peerStats.end(); i != eoi; ++i) {
|
_peerStats.begin(), eoi = _peerStats.end(); i != eoi; ++i) {
|
||||||
if((*i)->getCuid() == cuid) {
|
if((*i)->getCuid() == cuid) {
|
||||||
return *i;
|
return *i;
|
||||||
}
|
}
|
||||||
|
@ -401,7 +397,7 @@ unsigned int SegmentMan::calculateDownloadSpeed()
|
||||||
_lastPeerStatDlspdMapUpdated = global::wallclock;
|
_lastPeerStatDlspdMapUpdated = global::wallclock;
|
||||||
_peerStatDlspdMap.clear();
|
_peerStatDlspdMap.clear();
|
||||||
for(std::vector<SharedHandle<PeerStat> >::const_iterator i =
|
for(std::vector<SharedHandle<PeerStat> >::const_iterator i =
|
||||||
peerStats.begin(), eoi = peerStats.end(); i != eoi; ++i) {
|
_peerStats.begin(), eoi = _peerStats.end(); i != eoi; ++i) {
|
||||||
if((*i)->getStatus() == PeerStat::ACTIVE) {
|
if((*i)->getStatus() == PeerStat::ACTIVE) {
|
||||||
unsigned int s = (*i)->calculateDownloadSpeed();
|
unsigned int s = (*i)->calculateDownloadSpeed();
|
||||||
_peerStatDlspdMap[(*i)->getCuid()] = s;
|
_peerStatDlspdMap[(*i)->getCuid()] = s;
|
||||||
|
@ -455,11 +451,11 @@ size_t SegmentMan::countFreePieceFrom(size_t index) const
|
||||||
|
|
||||||
void SegmentMan::ignoreSegmentFor(const SharedHandle<FileEntry>& fileEntry)
|
void SegmentMan::ignoreSegmentFor(const SharedHandle<FileEntry>& fileEntry)
|
||||||
{
|
{
|
||||||
if(logger->debug()) {
|
if(_logger->debug()) {
|
||||||
logger->debug("ignoring segment for path=%s, offset=%s, length=%s",
|
_logger->debug("ignoring segment for path=%s, offset=%s, length=%s",
|
||||||
fileEntry->getPath().c_str(),
|
fileEntry->getPath().c_str(),
|
||||||
util::itos(fileEntry->getOffset()).c_str(),
|
util::itos(fileEntry->getOffset()).c_str(),
|
||||||
util::uitos(fileEntry->getLength()).c_str());
|
util::uitos(fileEntry->getLength()).c_str());
|
||||||
}
|
}
|
||||||
_ignoreBitfield.addFilter(fileEntry->getOffset(), fileEntry->getLength());
|
_ignoreBitfield.addFilter(fileEntry->getOffset(), fileEntry->getLength());
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,14 +57,11 @@ class PieceStorage;
|
||||||
class Piece;
|
class Piece;
|
||||||
class FileEntry;
|
class FileEntry;
|
||||||
|
|
||||||
class SegmentEntry {
|
struct SegmentEntry {
|
||||||
public:
|
|
||||||
cuid_t cuid;
|
cuid_t cuid;
|
||||||
SharedHandle<Segment> segment;
|
SharedHandle<Segment> segment;
|
||||||
public:
|
SegmentEntry(cuid_t cuid, const SharedHandle<Segment>& segment):
|
||||||
SegmentEntry(cuid_t cuid, const SharedHandle<Segment>& segment);
|
cuid(cuid), segment(segment) {}
|
||||||
|
|
||||||
~SegmentEntry();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef SharedHandle<SegmentEntry> SegmentEntryHandle;
|
typedef SharedHandle<SegmentEntry> SegmentEntryHandle;
|
||||||
|
@ -77,20 +74,20 @@ class SegmentMan {
|
||||||
private:
|
private:
|
||||||
const Option* _option;
|
const Option* _option;
|
||||||
|
|
||||||
Logger* logger;
|
Logger* _logger;
|
||||||
|
|
||||||
SharedHandle<DownloadContext> _downloadContext;
|
SharedHandle<DownloadContext> _downloadContext;
|
||||||
|
|
||||||
SharedHandle<PieceStorage> _pieceStorage;
|
SharedHandle<PieceStorage> _pieceStorage;
|
||||||
|
|
||||||
SegmentEntries usedSegmentEntries;
|
SegmentEntries _usedSegmentEntries;
|
||||||
|
|
||||||
// Remember writtenLength for each segment. The key is an index of a
|
// Remember writtenLength for each segment. The key is an index of a
|
||||||
// segment. The value is writtenLength for that segment.
|
// segment. The value is writtenLength for that segment.
|
||||||
std::map<size_t, size_t> _segmentWrittenLengthMemo;
|
std::map<size_t, size_t> _segmentWrittenLengthMemo;
|
||||||
|
|
||||||
// Used for calculating download speed.
|
// Used for calculating download speed.
|
||||||
std::vector<SharedHandle<PeerStat> > peerStats;
|
std::vector<SharedHandle<PeerStat> > _peerStats;
|
||||||
|
|
||||||
// Keep track of fastest PeerStat for each server
|
// Keep track of fastest PeerStat for each server
|
||||||
std::vector<SharedHandle<PeerStat> > _fastestPeerStats;
|
std::vector<SharedHandle<PeerStat> > _fastestPeerStats;
|
||||||
|
@ -207,14 +204,14 @@ public:
|
||||||
uint64_t getDownloadLength() const;
|
uint64_t getDownloadLength() const;
|
||||||
|
|
||||||
|
|
||||||
// If there is inactive PeerStat in peerStats, it is replaced with
|
// If there is inactive PeerStat in _peerStats, it is replaced with
|
||||||
// given peerStat. If no such PeerStat exist, the given peerStat is
|
// given peerStat. If no such PeerStat exist, the given peerStat is
|
||||||
// inserted.
|
// inserted.
|
||||||
void registerPeerStat(const SharedHandle<PeerStat>& peerStat);
|
void registerPeerStat(const SharedHandle<PeerStat>& peerStat);
|
||||||
|
|
||||||
const std::vector<SharedHandle<PeerStat> >& getPeerStats() const
|
const std::vector<SharedHandle<PeerStat> >& getPeerStats() const
|
||||||
{
|
{
|
||||||
return peerStats;
|
return _peerStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedHandle<PeerStat> getPeerStat(cuid_t cuid) const;
|
SharedHandle<PeerStat> getPeerStat(cuid_t cuid) const;
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
#include "ServerStatMan.h"
|
#include "ServerStatMan.h"
|
||||||
#include "FileAllocationEntry.h"
|
#include "FileAllocationEntry.h"
|
||||||
#include "CheckIntegrityEntry.h"
|
#include "CheckIntegrityEntry.h"
|
||||||
|
#include "Segment.h"
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
# include "bittorrent_helper.h"
|
# include "bittorrent_helper.h"
|
||||||
# include "BtRegistry.h"
|
# include "BtRegistry.h"
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "Option.h"
|
#include "Option.h"
|
||||||
#include "Exception.h"
|
#include "Exception.h"
|
||||||
#include "SegmentMan.h"
|
#include "SegmentMan.h"
|
||||||
|
#include "Segment.h"
|
||||||
#include "FileEntry.h"
|
#include "FileEntry.h"
|
||||||
#include "PieceSelector.h"
|
#include "PieceSelector.h"
|
||||||
#include "bittorrent_helper.h"
|
#include "bittorrent_helper.h"
|
||||||
|
|
Loading…
Reference in New Issue