mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-13 08:29:32 -05:00
Added consistent display of chunk map
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1837 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
adbdb51c5d
commit
e88d2c1928
@ -94,6 +94,20 @@ void ftController::setFtSearchNExtra(ftSearch *search, ftExtraList *list)
|
|||||||
mExtraList = list;
|
mExtraList = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ftController::getFileChunksDetails(const std::string& hash,FileChunksInfo& info)
|
||||||
|
{
|
||||||
|
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
|
||||||
|
|
||||||
|
std::map<std::string, ftFileControl>::iterator it = mDownloads.find(hash) ;
|
||||||
|
|
||||||
|
if(it == mDownloads.end())
|
||||||
|
return false ;
|
||||||
|
|
||||||
|
it->second.mCreator->getChunkMap(info) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
void ftController::addFileSource(const std::string& hash,const std::string& peer_id)
|
void ftController::addFileSource(const std::string& hash,const std::string& peer_id)
|
||||||
{
|
{
|
||||||
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
|
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
|
||||||
|
@ -136,6 +136,7 @@ bool FileCancel(std::string hash);
|
|||||||
bool FileControl(std::string hash, uint32_t flags);
|
bool FileControl(std::string hash, uint32_t flags);
|
||||||
bool FileClearCompleted();
|
bool FileClearCompleted();
|
||||||
bool FlagFileComplete(std::string hash);
|
bool FlagFileComplete(std::string hash);
|
||||||
|
bool getFileChunksDetails(const std::string& hash,FileChunksInfo& info);
|
||||||
|
|
||||||
/* get Details of File Transfers */
|
/* get Details of File Transfers */
|
||||||
bool FileDownloads(std::list<std::string> &hashs);
|
bool FileDownloads(std::list<std::string> &hashs);
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
ftFileCreator::ftFileCreator(std::string path, uint64_t size, std::string
|
ftFileCreator::ftFileCreator(std::string path, uint64_t size, std::string
|
||||||
hash, uint64_t recvd): ftFileProvider(path,size,hash)
|
hash, uint64_t recvd): ftFileProvider(path,size,hash), chunkMap(size)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* FIXME any inits to do?
|
* FIXME any inits to do?
|
||||||
@ -38,6 +38,8 @@ hash, uint64_t recvd): ftFileProvider(path,size,hash)
|
|||||||
/* initialise the Transfer Lists */
|
/* initialise the Transfer Lists */
|
||||||
mStart = recvd;
|
mStart = recvd;
|
||||||
mEnd = recvd;
|
mEnd = recvd;
|
||||||
|
|
||||||
|
chunkMap.received(recvd) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ftFileCreator::getFileData(uint64_t offset,
|
bool ftFileCreator::getFileData(uint64_t offset,
|
||||||
@ -264,6 +266,9 @@ int ftFileCreator::locked_notifyReceived(uint64_t offset, uint32_t chunk_size)
|
|||||||
mStart = offset + chunk_size;
|
mStart = offset + chunk_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update chunk map
|
||||||
|
chunkMap.received(mStart) ;
|
||||||
|
|
||||||
if (mChunks.size() == 0)
|
if (mChunks.size() == 0)
|
||||||
{
|
{
|
||||||
mStart = mEnd;
|
mStart = mEnd;
|
||||||
@ -271,6 +276,7 @@ int ftFileCreator::locked_notifyReceived(uint64_t offset, uint32_t chunk_size)
|
|||||||
|
|
||||||
/* otherwise there is another earlier block to go
|
/* otherwise there is another earlier block to go
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,11 +355,18 @@ bool ftFileCreator::getMissingChunk(uint64_t &offset, uint32_t &chunk)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
mChunks[offset] = ftChunk(offset, chunk, ts);
|
mChunks[offset] = ftChunk(offset, chunk, ts);
|
||||||
|
|
||||||
|
chunkMap.requested(offset,chunk) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true; /* cos more data to get */
|
return true; /* cos more data to get */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ftFileCreator::getChunkMap(FileChunksInfo& info)
|
||||||
|
{
|
||||||
|
RsStackMutex stack(ftcMutex); /********** STACK LOCKED MTX ******/
|
||||||
|
info = chunkMap ;
|
||||||
|
}
|
||||||
|
|
||||||
bool ftFileCreator::locked_printChunkMap()
|
bool ftFileCreator::locked_printChunkMap()
|
||||||
{
|
{
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#include "ftfileprovider.h"
|
#include "ftfileprovider.h"
|
||||||
|
#include "ftchunkmap.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
class ftChunk;
|
class ftChunk;
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ virtual bool getFileData(uint64_t offset, uint32_t &chunk_size, void *data);
|
|||||||
bool finished() { return getRecvd() == getFileSize(); }
|
bool finished() { return getRecvd() == getFileSize(); }
|
||||||
uint64_t getRecvd();
|
uint64_t getRecvd();
|
||||||
|
|
||||||
|
void getChunkMap(FileChunksInfo& info) ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* creation functions for FileCreator
|
* creation functions for FileCreator
|
||||||
@ -74,6 +76,7 @@ private:
|
|||||||
|
|
||||||
std::map<uint64_t, ftChunk> mChunks;
|
std::map<uint64_t, ftChunk> mChunks;
|
||||||
|
|
||||||
|
ChunkMap chunkMap ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ftChunk {
|
class ftChunk {
|
||||||
|
@ -307,17 +307,19 @@ void ftServer::getDwlDetails(std::list<DwlDetails> & details)
|
|||||||
|
|
||||||
bool ftServer::FileChunksDetails(const std::string& hash,FileChunksInfo& info)
|
bool ftServer::FileChunksDetails(const std::string& hash,FileChunksInfo& info)
|
||||||
{
|
{
|
||||||
// for know put some dummy info. It's for display sake only.
|
return mFtController->getFileChunksDetails(hash,info);
|
||||||
info.chunk_size = 1024*1024 ;
|
//
|
||||||
info.file_size = 250*info.chunk_size - 123 ; // last chunk is not complete.
|
// // for know put some dummy info. It's for display sake only.
|
||||||
info.chunks.resize(250,FileChunksInfo::CHUNK_DONE) ;
|
// info.chunk_size = 1024*1024 ;
|
||||||
int n = rand()%150 + 50 ;
|
// info.file_size = 250*info.chunk_size - 123 ; // last chunk is not complete.
|
||||||
for(int i=0;i<10;++i)
|
// info.chunks.resize(250,FileChunksInfo::CHUNK_DONE) ;
|
||||||
info.chunks[n+i] = FileChunksInfo::CHUNK_ACTIVE ;
|
// int n = rand()%150 + 50 ;
|
||||||
for(int i=n+10;i<250;++i)
|
// for(int i=0;i<10;++i)
|
||||||
info.chunks[i] = FileChunksInfo::CHUNK_OUTSTANDING ;
|
// info.chunks[n+i] = FileChunksInfo::CHUNK_ACTIVE ;
|
||||||
|
// for(int i=n+10;i<250;++i)
|
||||||
return true ;
|
// info.chunks[i] = FileChunksInfo::CHUNK_OUTSTANDING ;
|
||||||
|
//
|
||||||
|
// return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Directory Handling */
|
/* Directory Handling */
|
||||||
|
@ -14,8 +14,10 @@ debug {
|
|||||||
# DEFINES *= DEBUG
|
# DEFINES *= DEBUG
|
||||||
# DEFINES *= OPENDHT_DEBUG DHT_DEBUG CONN_DEBUG DEBUG_UDP_SORTER P3DISC_DEBUG DEBUG_UDP_LAYER FT_DEBUG EXTADDRSEARCH_DEBUG
|
# DEFINES *= OPENDHT_DEBUG DHT_DEBUG CONN_DEBUG DEBUG_UDP_SORTER P3DISC_DEBUG DEBUG_UDP_LAYER FT_DEBUG EXTADDRSEARCH_DEBUG
|
||||||
# DEFINES *= CHAT_DEBUG CONTROL_DEBUG FT_DEBUG
|
# DEFINES *= CHAT_DEBUG CONTROL_DEBUG FT_DEBUG
|
||||||
# DEFINES *= P3TURTLE_DEBUG
|
# DEFINES *= P3TURTLE_DEBUG UPNP_DEBUG
|
||||||
# DEFINES *= UPNP_DEBUG CONN_DEBUG
|
# DEFINES *= CONN_DEBUG
|
||||||
|
# DEFINES *= NET_DEBUG
|
||||||
|
# DEFINES *= DISTRIB_DEBUG
|
||||||
QMAKE_CXXFLAGS *= -g
|
QMAKE_CXXFLAGS *= -g
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,6 +149,7 @@ HEADERS += dbase/cachestrapper.h \
|
|||||||
ft/ftfileprovider.h \
|
ft/ftfileprovider.h \
|
||||||
ft/ftfilesearch.h \
|
ft/ftfilesearch.h \
|
||||||
ft/ftsearch.h \
|
ft/ftsearch.h \
|
||||||
|
ft/ftchunkmap.h \
|
||||||
ft/ftserver.h \
|
ft/ftserver.h \
|
||||||
ft/fttransfermodule.h \
|
ft/fttransfermodule.h \
|
||||||
ft/ftdwlqueue.h \
|
ft/ftdwlqueue.h \
|
||||||
@ -288,6 +291,7 @@ SOURCES += \
|
|||||||
ft/ftextralist.cc \
|
ft/ftextralist.cc \
|
||||||
ft/ftfilecreator.cc \
|
ft/ftfilecreator.cc \
|
||||||
ft/ftdata.cc \
|
ft/ftdata.cc \
|
||||||
|
ft/ftchunkmap.cc \
|
||||||
ft/ftfileprovider.cc \
|
ft/ftfileprovider.cc \
|
||||||
ft/ftdwlqueue.cc \
|
ft/ftdwlqueue.cc \
|
||||||
dht/opendhtmgr.cc \
|
dht/opendhtmgr.cc \
|
||||||
|
@ -101,7 +101,7 @@ void FileTransferInfoWidget::draw(const FileChunksInfo& info,QPainter *painter)
|
|||||||
if (fileSize%blockSize == 0) blocks--;
|
if (fileSize%blockSize == 0) blocks--;
|
||||||
QRectF source(0.0, 0.0, 12.0, 12.0);
|
QRectF source(0.0, 0.0, 12.0, 12.0);
|
||||||
|
|
||||||
for (int i=0;i<=blocks;i++)
|
for (int i=0;i<blocks;i++)
|
||||||
{
|
{
|
||||||
if (x > maxWidth - 13)
|
if (x > maxWidth - 13)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user