Sirikata
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
Sirikata::Transfer::AggregatedTransferPool Class Reference

AggregatedTransferPool manages multiple requests for the same resource. More...

#include <AggregatedTransferPool.hpp>

Inheritance diagram for Sirikata::Transfer::AggregatedTransferPool:
Collaboration diagram for Sirikata::Transfer::AggregatedTransferPool:

List of all members.

Classes

struct  RequestData

Public Member Functions

virtual ~AggregatedTransferPool ()
virtual void addRequest (TransferRequestPtr req)
 Puts a request into the pool.
virtual void updatePriority (TransferRequestPtr req, Priority p)
 Updates priority of a request in the pool.
void deleteRequest (TransferRequestPtr req)
 Updates priority of a request in the pool.

Private Types

typedef std::vector
< TransferRequestPtr
TransferRequestList
typedef
std::tr1::unordered_map
< String, RequestData
RequestDataMap

Private Member Functions

 AggregatedTransferPool (const std::string &clientID)
std::tr1::shared_ptr
< TransferRequest
getRequest ()
void handleMetadata (const String input_identifier, MetadataRequestPtr req, RemoteFileMetadataPtr response)
void handleChunk (const String input_identifier, ChunkRequestPtr req, DenseDataPtr response)
void handleDirectChunk (const String input_identifier, DirectChunkRequestPtr req, DenseDataPtr response)
void handleUpload (const String input_identifier, UploadRequestPtr req, const Transfer::URI &response)

Private Attributes

PriorityAggregationAlgorithmmAggregationAlgorithm
boost::mutex mMutex
RequestDataMap mRequestData
ThreadSafeQueue
< TransferRequestPtr
mDeltaQueue

Friends

class TransferMediator

Detailed Description

AggregatedTransferPool manages multiple requests for the same resource.

It only submits a single request to the Transfermediator, but aggregates priorities for the requests according to a user-provided function. When a resource is returned by the TransferMediator, it triggers all callbacks for the requested data.


Member Typedef Documentation

typedef std::tr1::unordered_map<String, RequestData> Sirikata::Transfer::AggregatedTransferPool::RequestDataMap [private]

Constructor & Destructor Documentation

virtual Sirikata::Transfer::AggregatedTransferPool::~AggregatedTransferPool ( ) [inline, virtual]
Sirikata::Transfer::AggregatedTransferPool::AggregatedTransferPool ( const std::string &  clientID) [inline, private]

References mAggregationAlgorithm.


Member Function Documentation

virtual void Sirikata::Transfer::AggregatedTransferPool::addRequest ( TransferRequestPtr  req) [inline, virtual]
void Sirikata::Transfer::AggregatedTransferPool::deleteRequest ( TransferRequestPtr  req) [inline, virtual]
std::tr1::shared_ptr<TransferRequest> Sirikata::Transfer::AggregatedTransferPool::getRequest ( ) [inline, private, virtual]
void Sirikata::Transfer::AggregatedTransferPool::handleChunk ( const String  input_identifier,
ChunkRequestPtr  req,
DenseDataPtr  response 
) [inline, private]
void Sirikata::Transfer::AggregatedTransferPool::handleDirectChunk ( const String  input_identifier,
DirectChunkRequestPtr  req,
DenseDataPtr  response 
) [inline, private]
void Sirikata::Transfer::AggregatedTransferPool::handleMetadata ( const String  input_identifier,
MetadataRequestPtr  req,
RemoteFileMetadataPtr  response 
) [inline, private]
void Sirikata::Transfer::AggregatedTransferPool::handleUpload ( const String  input_identifier,
UploadRequestPtr  req,
const Transfer::URI response 
) [inline, private]
virtual void Sirikata::Transfer::AggregatedTransferPool::updatePriority ( TransferRequestPtr  req,
Priority  p 
) [inline, virtual]

Friends And Related Function Documentation

friend class TransferMediator [friend]

Reimplemented from Sirikata::Transfer::TransferPool.


Member Data Documentation


The documentation for this class was generated from the following file: