AutopatcherMySQLRepository Class Reference

#include <AutopatcherMySQLRepository.h>

Inheritance diagram for AutopatcherMySQLRepository:

AutopatcherRepositoryInterface

List of all members.

Public Member Functions

bool CreateAutopatcherTables (void)
bool DestroyAutopatcherTables (void)
bool AddApplication (const char *applicationName, const char *userName)
bool RemoveApplication (const char *applicationName)
bool UpdateApplicationFiles (const char *applicationName, const char *applicationDirectory, const char *userName, FileListProgress *cb)
virtual bool GetChangelistSinceDate (const char *applicationName, FileList *addedFiles, FileList *deletedFiles, const char *sinceDate, char currentDate[64])
virtual bool GetPatches (const char *applicationName, FileList *input, FileList *patchList, char currentDate[64])
virtual const char * GetLastError (void) const
 If any of the above functions fail, the error string is stored internally. Call this to get it.
virtual unsigned int GetFilePart (const char *filename, unsigned int startReadBytes, unsigned int numBytesToRead, void *preallocatedDestination, FileListNodeContext context)


Detailed Description

An implementation of the AutopatcherRepositoryInterface to use MySQL to store the relevant data

Member Function Documentation

bool AutopatcherMySQLRepository::AddApplication ( const char *  applicationName,
const char *  userName 
)

Add an application for use by files. Call this second.

Parameters:
[in] applicationName A null terminated string.
[in] userName Stored in the database, but otherwise unused. Useful to track who added this application.
Returns:
True on success, false on failure.

bool AutopatcherMySQLRepository::CreateAutopatcherTables ( void   ) 

Create the tables used by the autopatcher, for all applications. Call this first.

Returns:
True on success, false on failure.

bool AutopatcherMySQLRepository::DestroyAutopatcherTables ( void   ) 

Destroy the tables used by the autopatcher. Don't call this unless you don't want to use the autopatcher anymore, or are testing.

Returns:
True on success, false on failure.

virtual bool AutopatcherMySQLRepository::GetChangelistSinceDate ( const char *  applicationName,
FileList *  addedFiles,
FileList *  deletedFiles,
const char *  sinceDate,
char  currentDate[64] 
) [virtual]

Get list of files added and deleted since a certain date. This is used by AutopatcherServer and not usually explicitly called.

Parameters:
[in] applicationName A null terminated string previously passed to AddApplication
[out] addedFiles A list of the current versions of filenames with SHA1_LENGTH byte hashes as their data that were created after sinceData
[out] deletedFiles A list of the current versions of filenames that were deleted after sinceData
[in] An input date, in the string format of a timestamp.
[out] currentDate The server date, in the string format of a timestamp.
Returns:
True on success, false on failure.

Implements AutopatcherRepositoryInterface.

virtual unsigned int AutopatcherMySQLRepository::GetFilePart ( const char *  filename,
unsigned int  startReadBytes,
unsigned int  numBytesToRead,
void *  preallocatedDestination,
FileListNodeContext  context 
) [virtual]

Read part of a file into destination Return the number of bytes written. Return 0 when file is done.

Parameters:
[in] filename Filename to read
[in] startReadBytes What offset from the start of the file to read from
[in] numBytesToRead How many bytes to read. This is also how many bytes have been allocated to preallocatedDestination
[out] preallocatedDestination Write your data here
Returns:
The number of bytes read, or 0 if none

virtual bool AutopatcherMySQLRepository::GetPatches ( const char *  applicationName,
FileList *  input,
FileList *  patchList,
char  currentDate[64] 
) [virtual]

Get patches (or files) for every file in input, assuming that input has a hash for each of those files. This is used by AutopatcherServer and not usually explicitly called.

Parameters:
[in] applicationName A null terminated string previously passed to AddApplication
[in] input A list of files with hashes to get from the database. If this hash exists, a patch to the current version is returned if this file is not the current version. Otherwise the current version is returned.
[out] patchList A list of files with either the filedata or the patch. This is a subset of input. The context data for each file will be either PC_WRITE_FILE (to just write the file) or PC_HASH_WITH_PATCH (to patch). If PC_HASH_WITH_PATCH, then the file contains a SHA1_LENGTH byte patch followed by the hash. The datalength is patchlength + SHA1_LENGTH
[out] currentDate The current server date, in whatever format your repository uses
Returns:
True on success, false on failure.

Implements AutopatcherRepositoryInterface.

bool AutopatcherMySQLRepository::RemoveApplication ( const char *  applicationName  ) 

Remove an application and files used by that application.

Parameters:
[in] applicationName A null terminated string previously passed to AddApplication
Returns:
True on success, false on failure.

bool AutopatcherMySQLRepository::UpdateApplicationFiles ( const char *  applicationName,
const char *  applicationDirectory,
const char *  userName,
FileListProgress cb 
)

Update all the files for an application to match what is at the specified directory. Call this third. Be careful not to call this with the wrong directory. This is implemented in a Begin and Rollback block so you won't a messed up database from get partial updates.

Parameters:
[in] applicationName A null terminated string previously passed to AddApplication
[in] applicationDirectory The base directory of your application. All files in this directory and subdirectories are added.
[in] userName Stored in the database, but otherwise unused. Useful to track who added this revision
[in] cb Callback to get progress updates. Pass 0 to not use.
Returns:
True on success, false on failure.


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

Generated on Fri Jul 22 08:28:34 2011 for RakNet by  doxygen 1.5.7.1