Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc.
More...
#include <DirectoryDeltaTransfer.h>
List of all members.
Detailed Description
Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc.
- See also:
- Autopatcher class for database driven patching, including binary deltas and search by date.
To use, first set the path to your application. For example "C:/Games/MyRPG/" To allow other systems to download files, call AddUploadsFromSubdirectory, where the parameter is a path relative to the path to your application. This includes subdirectories. For example: SetApplicationDirectory("C:/Games/MyRPG/"); AddUploadsFromSubdirectory("Mods/Skins/"); would allow downloads from "C:/Games/MyRPG/Mods/Skins/*.*" as well as "C:/Games/MyRPG/Mods/Skins/Level1/*.*" It would NOT allow downloads from C:/Games/MyRPG/Levels, nor would it allow downloads from C:/Windows While pathToApplication can be anything you want, applicationSubdirectory must match either partially or fully between systems.
Member Function Documentation
void DirectoryDeltaTransfer::AddUploadsFromSubdirectory |
( |
const char * |
subdir |
) |
|
Add all files in the specified subdirectory recursively subdir is appended to pathToApplication in SetApplicationDirectory(). All files in the resultant directory and subdirectories are then hashed so that users can download them.
- Precondition:
- You must call SetFileListTransferPlugin with a valid FileListTransfer plugin
- Parameters:
-
[in] | subdir | Concatenated with pathToApplication to form the final path from which to allow uploads. |
Downloads files from the matching parameter subdir in AddUploadsFromSubdirectory. subdir must contain all starting characters in subdir in AddUploadsFromSubdirectory Therefore, AddUploadsFromSubdirectory("Levels/Level1/"); would allow you to download using DownloadFromSubdirectory("Levels/Level1/Textures/"... but it would NOT allow you to download from DownloadFromSubdirectory("Levels/"... or DownloadFromSubdirectory("Levels/Level2/"...
- Precondition:
- You must call SetFileListTransferPlugin with a valid FileListTransfer plugin
- Parameters:
-
[in] | subdir | A directory passed to AddUploadsFromSubdirectory on the remote system. The passed dir can be more specific than the remote dir. |
[in] | outputSubdir | The directory to write the output to. Usually this will match subdir but it can be different if you want. |
[in] | prependAppDirToOutputSubdir | True to prepend outputSubdir with pathToApplication when determining the final output path. Usually you want this to be true. |
[in] | host | The address of the remote system to send the message to. |
[in] | onFileCallback | Callback to call per-file (optional). When fileIndex+1==setCount in the callback then the download is done |
[in] | _priority | See RakPeerInterface::Send() |
[in] | _orderingChannel | See RakPeerInterface::Send() |
[in] | cb | Callback to get progress updates. Pass 0 to not use. |
- Returns:
- A set ID, identifying this download set. Returns 65535 on host unreachable.
unsigned DirectoryDeltaTransfer::GetNumberOfFilesForUpload |
( |
void |
|
) |
const |
Returns how many files are available for upload
- Returns:
- How many files are available for upload
PluginReceiveResult DirectoryDeltaTransfer::OnReceive |
( |
Packet * |
packet |
) |
[virtual] |
OnReceive is called for every packet.
- Parameters:
-
[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 PluginInterface2.
void DirectoryDeltaTransfer::SetApplicationDirectory |
( |
const char * |
pathToApplication |
) |
|
Set the local root directory to base all file uploads and downloads off of.
- Parameters:
-
[in] | pathToApplication | This path will be prepended to applicationSubdirectory in AddUploadsFromSubdirectory to find the actual path on disk. |
void DirectoryDeltaTransfer::SetCompressOutgoingSends |
( |
bool |
compress |
) |
|
Set if we should compress outgoing sends or not Defaults to false, because this results in a noticeable freeze on large requests You can set this to true if you only send small files though
- Parameters:
-
[in] | compress | True to compress, false to not. |
void DirectoryDeltaTransfer::SetDownloadRequestIncrementalReadInterface |
( |
IncrementalReadInterface * |
_incrementalReadInterface, |
|
|
unsigned int |
_chunkSize | |
|
) |
| | |
Normally, if a remote system requests files, those files are all loaded into memory and sent immediately. This function allows the files to be read in incremental chunks, saving memory
- 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 |
void DirectoryDeltaTransfer::SetFileListTransferPlugin |
( |
FileListTransfer * |
flt |
) |
|
This plugin has a dependency on the FileListTransfer plugin, which it uses to actually send the files. So you need an instance of that plugin registered with RakPeerInterface, and a pointer to that interface should be passed here.
- Parameters:
-
void DirectoryDeltaTransfer::SetUploadSendParameters |
( |
PacketPriority |
_priority, |
|
|
char |
_orderingChannel | |
|
) |
| | |
The documentation for this class was generated from the following files: