FileListTransfer Class Reference
[FileListTransfer]

A plugin to provide a simple way to compress and incrementally send the files in the FileList structure. Similar to the DirectoryDeltaTransfer plugin, except that it doesn't send deltas based on pre-existing files or actually write the files to disk. More...

#include <FileListTransfer.h>

Inheritance diagram for FileListTransfer:

PluginInterface

List of all members.

Public Member Functions

unsigned short SetupReceive (FileListTransferCBInterface *handler, bool deleteHandler, SystemAddress allowedSender)
void Send (FileList *fileList, RakPeerInterface *rakPeer, SystemAddress recipient, unsigned short setID, PacketPriority priority, char orderingChannel, bool compressData, IncrementalReadInterface *_incrementalReadInterface=0, unsigned int _chunkSize=8388608)
void SetIncrementalReadInterface (IncrementalReadInterface *_incrementalReadInterface, unsigned int _chunkSize)
void CancelReceive (unsigned short setId)
 Stop a download.
void RemoveReceiver (SystemAddress systemAddress)
 Remove all handlers associated with a particular system address.
bool IsHandlerActive (unsigned short setId)
 Is a handler passed to SetupReceive still running?
void SetCallback (FileListProgress *cb)
FileListProgressGetCallback (void) const
virtual PluginReceiveResult OnReceive (RakPeerInterface *peer, Packet *packet)
virtual void OnShutdown (RakPeerInterface *peer)
virtual void OnCloseConnection (RakPeerInterface *peer, SystemAddress systemAddress)
virtual void OnAttach (RakPeerInterface *peer)
virtual void Update (RakPeerInterface *peer)


Detailed Description

A plugin to provide a simple way to compress and incrementally send the files in the FileList structure. Similar to the DirectoryDeltaTransfer plugin, except that it doesn't send deltas based on pre-existing files or actually write the files to disk.

Usage: Call SetupReceive to allow one file set to arrive. The value returned by FileListTransfer::SetupReceive() is the setID that is allowed. It's up to you to transmit this value to the other system, along with information indicating what kind of files you want to get. The other system should then prepare a FileList and call FileListTransfer::Send(), passing the return value of FileListTransfer::SetupReceive() as the setID parameter to FileListTransfer::Send()


Member Function Documentation

FileListProgress * FileListTransfer::GetCallback ( void   )  const

Returns:
what was sent to SetCallback

What was sent to SetCallback

void FileListTransfer::OnAttach ( RakPeerInterface peer  )  [virtual]

Called when the interface is attached

Parameters:
[in] peer the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface.

void FileListTransfer::OnCloseConnection ( RakPeerInterface peer,
SystemAddress  systemAddress 
) [virtual]

Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system

Parameters:
[in] peer the instance of RakPeer that is calling Receive
[in] systemAddress The system whose connection was closed

Reimplemented from PluginInterface.

PluginReceiveResult FileListTransfer::OnReceive ( RakPeerInterface peer,
Packet packet 
) [virtual]

OnReceive is called for every packet.

Parameters:
[in] peer the instance of RakPeer that is calling Receive
[in] packet the packet that is being returned to the user
Returns:
True to allow the game and other plugins to get this message, false to absorb it

Reimplemented from PluginInterface.

void FileListTransfer::OnShutdown ( RakPeerInterface peer  )  [virtual]

Called when RakPeer is shutdown

Parameters:
[in] peer the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface.

void FileListTransfer::Send ( FileList *  fileList,
RakPeerInterface rakPeer,
SystemAddress  recipient,
unsigned short  setID,
PacketPriority  priority,
char  orderingChannel,
bool  compressData,
IncrementalReadInterface *  _incrementalReadInterface = 0,
unsigned int  _chunkSize = 8388608 
)

Send the FileList structure to another system, which must have previously called SetupReceive()

Parameters:
[in] fileList A list of files. The data contained in FileList::data will be sent incrementally and compressed among all files in the set
[in] rakPeer The instance of RakNet to use to send the message
[in] recipient The address of the system to send to
[in] setID The return value of SetupReceive() which was previously called on recipient
[in] priority Passed to RakPeerInterface::Send()
[in] orderingChannel Passed to RakPeerInterface::Send()
[in] compressData Depreciated, unsupported
[in] _incrementalReadInterface If a file in fileList has no data, filePullInterface will be used to read the file in chunks of size chunkSize
[in] _chunkSize How large of a block of a file to send at once

void FileListTransfer::SetCallback ( FileListProgress cb  ) 

Set a callback to get progress reports about what the file list instances do

Parameters:
[in] cb A pointer to an externally defined instance of FileListProgress. This pointer is held internally, so should remain valid as long as this class is valid.

void FileListTransfer::SetIncrementalReadInterface ( IncrementalReadInterface *  _incrementalReadInterface,
unsigned int  _chunkSize 
)

In order to support sending files that are references (See FileList::AddFile), incrementalReadInterface must be set. Referenced files are sent in chunks, rather than the complete file at a time.

Parameters:
[in] _incrementalReadInterface If a file in fileList has no data, filePullInterface will be used to read the file in chunks of size chunkSize
[in] _chunkSize How large of a block of a file to send at once

unsigned short FileListTransfer::SetupReceive ( FileListTransferCBInterface handler,
bool  deleteHandler,
SystemAddress  allowedSender 
)

Allows one corresponding Send() call from another system to arrive.

Parameters:
[in] handler The class to call on each file
[in] deleteHandler True to delete the handler when it is no longer needed. False to not do so.
[in] allowedSender Which system to allow files from.
Returns:
A set ID value, which should be passed as the setID value to the Send() call on the other system. This value will be returned in the callback and is unique per file set. Returns 65535 on failure (not connected to sender)

void FileListTransfer::Update ( RakPeerInterface peer  )  [virtual]

Update is called every time a packet is checked for .

Parameters:
[in] peer - the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface.


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

Generated on Tue Feb 10 08:44:07 2009 for RakNet by  doxygen 1.5.7.1