#include <llxfermanager.h>
Public Types | |
enum | { LOW_PRIORITY = FALSE, HIGH_PRIORITY = TRUE } |
typedef std::list< LLHostStatus * > | status_list_t |
Public Member Functions | |
LLXferManager (LLVFS *vfs) | |
virtual | ~LLXferManager () |
virtual void | init (LLVFS *vfs) |
virtual void | free () |
void | setUseAckThrottling (const BOOL use) |
void | setAckThrottleBPS (const F32 bps) |
virtual LLXfer * | findXfer (U64 id, LLXfer *list_head) |
virtual void | removeXfer (LLXfer *delp, LLXfer **list_head) |
virtual U32 | numActiveListEntries (LLXfer *list_head) |
virtual S32 | numActiveXfers (const LLHost &host) |
virtual S32 | numPendingXfers (const LLHost &host) |
virtual void | changeNumActiveXfers (const LLHost &host, S32 delta) |
virtual void | setMaxOutgoingXfersPerCircuit (S32 max_num) |
virtual void | setMaxIncomingXfers (S32 max_num) |
virtual void | updateHostStatus () |
virtual void | printHostStatus () |
virtual void | registerCallbacks (LLMessageSystem *mesgsys) |
virtual U64 | getNextID () |
virtual S32 | encodePacketNum (S32 packet_num, BOOL is_eof) |
virtual S32 | decodePacketNum (S32 packet_num) |
virtual BOOL | isLastPacket (S32 packet_num) |
virtual U64 | registerXfer (const void *datap, const S32 length) |
virtual void | requestFile (const char *local_filename, const char *remote_filename, ELLPath remote_path, const LLHost &remote_host, BOOL delete_remote_on_completion, void(*callback)(void **, S32, LLExtStat), void **user_data, BOOL is_priority=FALSE, BOOL use_big_packets=FALSE) |
virtual void | requestFile (const char *remote_filename, ELLPath remote_path, const LLHost &remote_host, BOOL delete_remote_on_completion, void(*callback)(void *, S32, void **, S32, LLExtStat), void **user_data, BOOL is_priority=FALSE) |
virtual void | requestVFile (const LLUUID &local_id, const LLUUID &remote_id, LLAssetType::EType type, LLVFS *vfs, const LLHost &remote_host, void(*callback)(void **, S32, LLExtStat), void **user_data, BOOL is_priority=FALSE) |
virtual void | processReceiveData (LLMessageSystem *mesgsys, void **user_data) |
virtual void | sendConfirmPacket (LLMessageSystem *mesgsys, U64 id, S32 packetnum, const LLHost &remote_host) |
virtual void | processFileRequest (LLMessageSystem *mesgsys, void **user_data) |
virtual void | processConfirmation (LLMessageSystem *mesgsys, void **user_data) |
virtual void | retransmitUnackedPackets () |
virtual void | processAbort (LLMessageSystem *mesgsys, void **user_data) |
Public Attributes | |
LLXfer * | mSendList |
LLXfer * | mReceiveList |
status_list_t | mOutgoingHosts |
Protected Member Functions | |
virtual void | startPendingDownloads () |
virtual void | addToList (LLXfer *xferp, LLXfer *&head, BOOL is_priority) |
Protected Attributes | |
S32 | mMaxOutgoingXfersPerCircuit |
S32 | mMaxIncomingXfers |
BOOL | mUseAckThrottling |
LLLinkedQueue< LLXferAckInfo > | mXferAckQueue |
LLThrottle | mAckThrottle |
Private Attributes | |
LLVFS * | mVFS |
Definition at line 78 of file llxfermanager.h.
typedef std::list<LLHostStatus*> LLXferManager::status_list_t |
Definition at line 103 of file llxfermanager.h.
anonymous enum |
LLXferManager::LLXferManager | ( | LLVFS * | vfs | ) |
Definition at line 58 of file llxfermanager.cpp.
References init().
Referenced by start_xfer_manager().
LLXferManager::~LLXferManager | ( | ) | [virtual] |
Definition at line 65 of file llxfermanager.cpp.
References free().
void LLXferManager::startPendingDownloads | ( | ) | [protected, virtual] |
Definition at line 1015 of file llxfermanager.cpp.
References LLXfer::abort(), e_LL_XFER_IN_PROGRESS, e_LL_XFER_PENDING, lldebugs, llendl, llmin(), mMaxIncomingXfers, LLXfer::mNext, mReceiveList, LLXfer::mStatus, S32, and LLXfer::startDownload().
Referenced by processAbort(), processReceiveData(), requestFile(), and requestVFile().
void LLXferManager::addToList | ( | LLXfer * | xferp, | |
LLXfer *& | head, | |||
BOOL | is_priority | |||
) | [protected, virtual] |
Definition at line 1069 of file llxfermanager.cpp.
References LLXfer::mNext, and NULL.
Referenced by requestFile(), and requestVFile().
void LLXferManager::init | ( | LLVFS * | vfs | ) | [virtual] |
Definition at line 72 of file llxfermanager.cpp.
References FALSE, LL_DEFAULT_MAX_REQUEST_FIFO_XFERS, LL_DEFAULT_MAX_SIMULTANEOUS_XFERS, mReceiveList, mSendList, mUseAckThrottling, mVFS, NULL, setAckThrottleBPS(), setMaxIncomingXfers(), and setMaxOutgoingXfersPerCircuit().
Referenced by LLXferManager().
void LLXferManager::free | ( | void | ) | [virtual] |
Definition at line 89 of file llxfermanager.cpp.
References LLXfer::mNext, mOutgoingHosts, mReceiveList, mSendList, and NULL.
Referenced by ~LLXferManager().
void LLXferManager::setUseAckThrottling | ( | const BOOL | use | ) |
Definition at line 130 of file llxfermanager.cpp.
References mUseAckThrottling.
Referenced by idle_startup().
void LLXferManager::setAckThrottleBPS | ( | const F32 | bps | ) |
Definition at line 135 of file llxfermanager.cpp.
References LL_DEBUGS, LL_ENDL, LL_PACKET_TIMEOUT, llmax(), mAckThrottle, mMaxIncomingXfers, and LLThrottle::setRate().
Referenced by idle_startup(), and init().
Definition at line 217 of file llxfermanager.cpp.
References LLXfer::mID, LLXfer::mNext, and NULL.
Referenced by processAbort(), processConfirmation(), processFileRequest(), and processReceiveData().
Definition at line 233 of file llxfermanager.cpp.
References LLXfer::mNext.
Referenced by processAbort(), processConfirmation(), processFileRequest(), processReceiveData(), registerXfer(), and retransmitUnackedPackets().
Definition at line 263 of file llxfermanager.cpp.
References e_LL_XFER_IN_PROGRESS, LLXfer::mNext, and LLXfer::mStatus.
Definition at line 298 of file llxfermanager.cpp.
References LLHostStatus::mHost, LLHostStatus::mNumActive, mOutgoingHosts, and NULL.
Referenced by processFileRequest(), and retransmitUnackedPackets().
Definition at line 280 of file llxfermanager.cpp.
References LLHostStatus::mHost, LLHostStatus::mNumPending, mOutgoingHosts, and NULL.
Referenced by processFileRequest().
Definition at line 316 of file llxfermanager.cpp.
References LLHostStatus::mHost, LLHostStatus::mNumActive, mOutgoingHosts, and NULL.
Referenced by processFileRequest(), and retransmitUnackedPackets().
void LLXferManager::setMaxOutgoingXfersPerCircuit | ( | S32 | max_num | ) | [virtual] |
Definition at line 125 of file llxfermanager.cpp.
References mMaxOutgoingXfersPerCircuit.
Referenced by init().
void LLXferManager::setMaxIncomingXfers | ( | S32 | max_num | ) | [virtual] |
Definition at line 118 of file llxfermanager.cpp.
References mMaxIncomingXfers.
Referenced by idle_startup(), and init().
void LLXferManager::updateHostStatus | ( | ) | [virtual] |
Definition at line 154 of file llxfermanager.cpp.
References e_LL_XFER_IN_PROGRESS, e_LL_XFER_PENDING, LLHostStatus::mHost, LLXfer::mNext, LLHostStatus::mNumActive, LLHostStatus::mNumPending, mOutgoingHosts, LLXfer::mRemoteHost, mSendList, LLXfer::mStatus, and NULL.
Referenced by retransmitUnackedPackets().
void LLXferManager::printHostStatus | ( | ) | [virtual] |
Definition at line 199 of file llxfermanager.cpp.
References llendl, llinfos, LLHostStatus::mHost, LLHostStatus::mNumActive, LLHostStatus::mNumPending, mOutgoingHosts, and NULL.
void LLXferManager::registerCallbacks | ( | LLMessageSystem * | mesgsys | ) | [virtual] |
Definition at line 333 of file llxfermanager.cpp.
References _PREHASH_AbortXfer, _PREHASH_ConfirmXferPacket, _PREHASH_RequestXfer, _PREHASH_SendXferPacket, continue_file_receive(), NULL, process_abort_xfer(), process_confirm_packet(), process_request_xfer(), and LLMessageSystem::setHandlerFuncFast().
Referenced by idle_startup().
U64 LLXferManager::getNextID | ( | ) | [virtual] |
Definition at line 343 of file llxfermanager.cpp.
References LLUUID::generate(), and LLUUID::mData.
Referenced by registerXfer(), requestFile(), and requestVFile().
Definition at line 355 of file llxfermanager.cpp.
Definition at line 366 of file llxfermanager.cpp.
Referenced by processReceiveData().
Definition at line 373 of file llxfermanager.cpp.
Referenced by processReceiveData().
Definition at line 380 of file llxfermanager.cpp.
References getNextID(), llendl, llerrs, LLXfer::mNext, mSendList, and removeXfer().
void LLXferManager::requestFile | ( | const char * | local_filename, | |
const char * | remote_filename, | |||
ELLPath | remote_path, | |||
const LLHost & | remote_host, | |||
BOOL | delete_remote_on_completion, | |||
void(*)(void **, S32, LLExtStat) | callback, | |||
void ** | user_data, | |||
BOOL | is_priority = FALSE , |
|||
BOOL | use_big_packets = FALSE | |||
) | [virtual] |
Definition at line 409 of file llxfermanager.cpp.
References addToList(), getNextID(), LLXfer::getXferTypeTag(), LL_XFER_LARGE_PAYLOAD, llendl, llerrs, LLXfer::mCallback, LLXfer::mCallbackDataHandle, LLXfer::mNext, mReceiveList, LLXfer::mRemoteHost, LLFile::remove(), S32, startPendingDownloads(), and LLXfer::XFER_FILE.
Referenced by process_initiate_download(), LLMuteList::processMuteListUpdate(), LLViewerObject::processTaskInv(), and LLPanelRequestTools::sendRequest().
void LLXferManager::requestFile | ( | const char * | remote_filename, | |
ELLPath | remote_path, | |||
const LLHost & | remote_host, | |||
BOOL | delete_remote_on_completion, | |||
void(*)(void *, S32, void **, S32, LLExtStat) | callback, | |||
void ** | user_data, | |||
BOOL | is_priority = FALSE | |||
) | [virtual] |
Definition at line 467 of file llxfermanager.cpp.
References addToList(), getNextID(), llendl, llerrs, mReceiveList, and startPendingDownloads().
void LLXferManager::requestVFile | ( | const LLUUID & | local_id, | |
const LLUUID & | remote_id, | |||
LLAssetType::EType | type, | |||
LLVFS * | vfs, | |||
const LLHost & | remote_host, | |||
void(*)(void **, S32, LLExtStat) | callback, | |||
void ** | user_data, | |||
BOOL | is_priority = FALSE | |||
) | [virtual] |
Definition at line 495 of file llxfermanager.cpp.
References addToList(), getNextID(), LLXfer::getXferTypeTag(), llendl, llerrs, LLXfer::mCallback, LLXfer::mCallbackDataHandle, LLXfer::mNext, mReceiveList, LLXfer::mRemoteHost, startPendingDownloads(), and LLXfer::XFER_VFILE.
void LLXferManager::processReceiveData | ( | LLMessageSystem * | mesgsys, | |
void ** | user_data | |||
) | [virtual] |
Definition at line 603 of file llxfermanager.cpp.
References _PREHASH_Data, _PREHASH_DataPacket, _PREHASH_ID, _PREHASH_Packet, _PREHASH_XferID, LLXfer::abort(), decodePacketNum(), findXfer(), LLMessageSystem::getBinaryDataFast(), LLXfer::getName(), LLMessageSystem::getS32Fast(), LLMessageSystem::getSender(), LLMessageSystem::getSizeFast(), LLMessageSystem::getU64Fast(), isLastPacket(), LL_ERR_CANNOT_OPEN_FILE, LL_XFER_LARGE_PAYLOAD, llendl, llinfos, llwarns, MAX_STRING, LLXferAckInfo::mID, LLXferAckInfo::mPacketNum, LLXfer::mPacketNum, mReceiveList, LLXferAckInfo::mRemoteHost, LLXfer::mRemoteHost, mUseAckThrottling, MVT_S32, mXferAckQueue, ntohmemcpy(), LLXfer::processEOF(), LLLinkedQueue< DATA_TYPE >::push(), LLXfer::receiveData(), removeXfer(), S32, sendConfirmPacket(), LLXfer::setXferSize(), startPendingDownloads(), and U64_to_str().
Referenced by continue_file_receive().
void LLXferManager::sendConfirmPacket | ( | LLMessageSystem * | mesgsys, | |
U64 | id, | |||
S32 | packetnum, | |||
const LLHost & | remote_host | |||
) | [virtual] |
Definition at line 698 of file llxfermanager.cpp.
References _PREHASH_ConfirmXferPacket, _PREHASH_ID, _PREHASH_Packet, _PREHASH_XferID, LLMessageSystem::addU32Fast(), LLMessageSystem::addU64Fast(), LLMessageSystem::newMessageFast(), LLMessageSystem::nextBlockFast(), and LLMessageSystem::sendMessage().
Referenced by processReceiveData(), and retransmitUnackedPackets().
void LLXferManager::processFileRequest | ( | LLMessageSystem * | mesgsys, | |
void ** | user_data | |||
) | [virtual] |
Definition at line 716 of file llxfermanager.cpp.
References _PREHASH_AbortXfer, _PREHASH_Filename, _PREHASH_ID, _PREHASH_Result, _PREHASH_VFileID, _PREHASH_VFileType, _PREHASH_XferID, LLXfer::abort(), LLMessageSystem::addS32Fast(), LLMessageSystem::addU64Fast(), changeNumActiveXfers(), FALSE, findXfer(), gDirUtilp, LLMessageSystem::getBOOL(), LLDir::getExpandedFilename(), LLMessageSystem::getS16Fast(), LLMessageSystem::getSender(), LLMessageSystem::getStringFast(), LLMessageSystem::getU64Fast(), LLMessageSystem::getU8(), LLMessageSystem::getUUIDFast(), LL_ERR_FILE_NOT_FOUND, LL_ERR_NOERR, LL_PATH_COUNT, LL_PATH_NONE, LL_XFER_LARGE_PAYLOAD, llendl, llerrs, llinfos, llwarns, LLAssetType::lookup(), MAX_STRING, mMaxOutgoingXfersPerCircuit, LLXfer::mNext, LLXfer::mRemoteHost, mSendList, mVFS, LLMessageSystem::newMessageFast(), LLMessageSystem::nextBlockFast(), NULL, LLUUID::null, numActiveXfers(), numPendingXfers(), removeXfer(), S32, LLMessageSystem::sendMessage(), LLXfer::sendNextPacket(), LLXfer::startSend(), and U64_to_str().
Referenced by process_request_xfer().
void LLXferManager::processConfirmation | ( | LLMessageSystem * | mesgsys, | |
void ** | user_data | |||
) | [virtual] |
Definition at line 866 of file llxfermanager.cpp.
References _PREHASH_ID, _PREHASH_Packet, _PREHASH_XferID, e_LL_XFER_IN_PROGRESS, FALSE, findXfer(), LLMessageSystem::getS32Fast(), LLMessageSystem::getU64Fast(), mSendList, LLXfer::mStatus, LLXfer::mWaitingForACK, removeXfer(), S32, and LLXfer::sendNextPacket().
Referenced by process_confirm_packet().
void LLXferManager::retransmitUnackedPackets | ( | ) | [virtual] |
Definition at line 892 of file llxfermanager.cpp.
References LLXfer::abort(), LLXfer::ACKTimer, changeNumActiveXfers(), LLThrottle::checkOverflow(), e_LL_XFER_ABORTED, e_LL_XFER_IN_PROGRESS, e_LL_XFER_PENDING, e_LL_XFER_REGISTERED, LLTimer::getElapsedTimeF32(), LLLinkedQueue< DATA_TYPE >::getLength(), LLXfer::getName(), gMessageSystem, LLCircuit::isCircuitAlive(), LL_ERR_CIRCUIT_GONE, LL_ERR_TCP_TIMEOUT, LL_PACKET_RETRY_LIMIT, LL_PACKET_TIMEOUT, LL_XFER_REGISTRATION_TIMEOUT, llendl, llinfos, llwarns, mAckThrottle, LLXfer::mCallbackResult, LLMessageSystem::mCircuitInfo, LLXferAckInfo::mID, mMaxOutgoingXfersPerCircuit, LLXfer::mNext, LLXferAckInfo::mPacketNum, LLXfer::mPacketNum, mReceiveList, LLXferAckInfo::mRemoteHost, LLXfer::mRemoteHost, LLXfer::mRetries, mSendList, LLXfer::mStatus, LLXfer::mWaitingForACK, mXferAckQueue, numActiveXfers(), LLLinkedQueue< DATA_TYPE >::pop(), LLXfer::processEOF(), removeXfer(), LLXfer::resendLastPacket(), sendConfirmPacket(), LLXfer::sendNextPacket(), LLThrottle::throttleOverflow(), and updateHostStatus().
Referenced by LLAppViewer::idleNetwork(), and LLMessageSystem::processAcks().
void LLXferManager::processAbort | ( | LLMessageSystem * | mesgsys, | |
void ** | user_data | |||
) | [virtual] |
Definition at line 994 of file llxfermanager.cpp.
References _PREHASH_ID, _PREHASH_Result, _PREHASH_XferID, findXfer(), LLMessageSystem::getS32Fast(), LLMessageSystem::getU64Fast(), LLXfer::mCallbackResult, mReceiveList, LLXfer::processEOF(), removeXfer(), S32, and startPendingDownloads().
Referenced by process_abort_xfer().
LLVFS* LLXferManager::mVFS [private] |
S32 LLXferManager::mMaxOutgoingXfersPerCircuit [protected] |
Definition at line 84 of file llxfermanager.h.
Referenced by processFileRequest(), retransmitUnackedPackets(), and setMaxOutgoingXfersPerCircuit().
S32 LLXferManager::mMaxIncomingXfers [protected] |
Definition at line 85 of file llxfermanager.h.
Referenced by setAckThrottleBPS(), setMaxIncomingXfers(), and startPendingDownloads().
BOOL LLXferManager::mUseAckThrottling [protected] |
Definition at line 87 of file llxfermanager.h.
Referenced by init(), processReceiveData(), and setUseAckThrottling().
LLLinkedQueue<LLXferAckInfo> LLXferManager::mXferAckQueue [protected] |
Definition at line 88 of file llxfermanager.h.
Referenced by processReceiveData(), and retransmitUnackedPackets().
LLThrottle LLXferManager::mAckThrottle [protected] |
Definition at line 89 of file llxfermanager.h.
Referenced by retransmitUnackedPackets(), and setAckThrottleBPS().
Definition at line 100 of file llxfermanager.h.
Referenced by free(), init(), processConfirmation(), processFileRequest(), registerXfer(), retransmitUnackedPackets(), and updateHostStatus().
Definition at line 101 of file llxfermanager.h.
Referenced by free(), init(), processAbort(), processReceiveData(), requestFile(), requestVFile(), retransmitUnackedPackets(), and startPendingDownloads().
Definition at line 104 of file llxfermanager.h.
Referenced by changeNumActiveXfers(), free(), numActiveXfers(), numPendingXfers(), printHostStatus(), and updateHostStatus().