#include <FileListTransfer.h>
Public Member Functions | |
void | StartIncrementalReadThreads (int numThreads, int threadPriority=-99999) |
Optionally start worker threads when using _incrementalReadInterface for the Send() operation. | |
unsigned short | SetupReceive (FileListTransferCBInterface *handler, bool deleteHandler, SystemAddress allowedSender) |
Allows one corresponding Send() call from another system to arrive. | |
void | Send (FileList *fileList, RakNet::RakPeerInterface *rakPeer, SystemAddress recipient, unsigned short setID, PacketPriority priority, char orderingChannel, IncrementalReadInterface *_incrementalReadInterface=0, unsigned int _chunkSize=262144 *4 *16) |
Send the FileList structure to another system, which must have previously called SetupReceive(). | |
unsigned int | GetPendingFilesToAddress (SystemAddress recipient) |
Return number of files waiting to go out to a particular address. | |
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 | AddCallback (FileListProgress *cb) |
Adds a callback to get progress reports about what the file list instances do. | |
void | RemoveCallback (FileListProgress *cb) |
Removes a callback. | |
void | ClearCallbacks (void) |
Removes all callbacks. | |
void | GetCallbacks (DataStructures::List< FileListProgress * > &callbacks) |
virtual PluginReceiveResult | OnReceive (Packet *packet) |
virtual void | OnRakPeerShutdown (void) |
Called when RakPeer is shutdown. | |
virtual void | OnClosedConnection (const SystemAddress &systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason) |
virtual void | Update (void) |
Update is called every time a packet is checked for . |
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()
void RakNet::FileListTransfer::AddCallback | ( | FileListProgress * | cb | ) |
Adds a callback to get progress reports about what the file list instances do.
[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 RakNet::FileListTransfer::GetCallbacks | ( | DataStructures::List< FileListProgress * > & | callbacks | ) |
Returns all callbacks added with AddCallback()
[out] | callbacks | The list is set to the list of callbacks |
virtual void RakNet::FileListTransfer::OnClosedConnection | ( | const SystemAddress & | systemAddress, | |
RakNetGUID | rakNetGUID, | |||
PI2_LostConnectionReason | lostConnectionReason | |||
) | [virtual] |
Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system
[in] | systemAddress | The system whose connection was closed |
[in] | rakNetGuid | The guid of the specified system |
[in] | lostConnectionReason | How the connection was closed: manually, connection lost, or notification of disconnection |
Reimplemented from RakNet::PluginInterface2.
virtual PluginReceiveResult RakNet::FileListTransfer::OnReceive | ( | Packet * | packet | ) | [virtual] |
OnReceive is called for every packet.
[in] | packet | the packet that is being returned to the user |
Reimplemented from RakNet::PluginInterface2.
void RakNet::FileListTransfer::RemoveCallback | ( | FileListProgress * | cb | ) |
Removes a callback.
[in] | cb | A pointer to an externally defined instance of FileListProgress that was previously added with AddCallback() |
void RakNet::FileListTransfer::Send | ( | FileList * | fileList, | |
RakNet::RakPeerInterface * | rakPeer, | |||
SystemAddress | recipient, | |||
unsigned short | setID, | |||
PacketPriority | priority, | |||
char | orderingChannel, | |||
IncrementalReadInterface * | _incrementalReadInterface = 0 , |
|||
unsigned int | _chunkSize = 262144 *4 *16 | |||
) |
Send the FileList structure to another system, which must have previously called SetupReceive().
[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. Pass 0 to use the instance the plugin is attached to |
[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] | _incrementalReadInterface | If a file in fileList has no data, _incrementalReadInterface 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 RakNet::FileListTransfer::SetupReceive | ( | FileListTransferCBInterface * | handler, | |
bool | deleteHandler, | |||
SystemAddress | allowedSender | |||
) |
Allows one corresponding Send() call from another system to arrive.
[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. |
void RakNet::FileListTransfer::StartIncrementalReadThreads | ( | int | numThreads, | |
int | threadPriority = -99999 | |||
) |
Optionally start worker threads when using _incrementalReadInterface for the Send() operation.
[in] | numThreads | how many worker threads to start |
[in] | threadPriority | Passed to the thread creation routine. Use THREAD_PRIORITY_NORMAL for Windows. For Linux based systems, you MUST pass something reasonable based on the thread priorities for your application. |