| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
- <title>RakNet: RakNet::AutopatcherPostgreRepository Class Reference</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="dynsections.js"></script>
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
- <div id="titlearea">
- <table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">RakNet
-  <span id="projectnumber">4.0</span>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.8.2 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="pages.html"><span>Related Pages</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class List</span></a></li>
- <li><a href="classes.html"><span>Class Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class Members</span></a></li>
- </ul>
- </div>
- <div id="nav-path" class="navpath">
- <ul>
- <li class="navelem"><a class="el" href="namespaceRakNet.html">RakNet</a></li><li class="navelem"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html">AutopatcherPostgreRepository</a></li> </ul>
- </div>
- </div><!-- top -->
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="classRakNet_1_1AutopatcherPostgreRepository-members.html">List of all members</a> </div>
- <div class="headertitle">
- <div class="title">RakNet::AutopatcherPostgreRepository Class Reference</div> </div>
- </div><!--header-->
- <div class="contents">
- <p><code>#include <AutopatcherPostgreRepository.h></code></p>
- <div class="dynheader">
- Inheritance diagram for RakNet::AutopatcherPostgreRepository:</div>
- <div class="dyncontent">
- <div class="center">
- <img src="classRakNet_1_1AutopatcherPostgreRepository.png" usemap="#RakNet::AutopatcherPostgreRepository_map" alt=""/>
- <map id="RakNet::AutopatcherPostgreRepository_map" name="RakNet::AutopatcherPostgreRepository_map">
- <area href="classRakNet_1_1AutopatcherRepositoryInterface.html" title="An interface used by AutopatcherServer to get the data necessary to run an autopatcher. This is up to you to implement for custom repository solutions." alt="RakNet::AutopatcherRepositoryInterface" shape="rect" coords="0,0,237,24"/>
- </map>
- </div></div>
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
- Public Member Functions</h2></td></tr>
- <tr class="memitem:a5b2424c890256b56552b9633a9d7df24"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a5b2424c890256b56552b9633a9d7df24">CreateAutopatcherTables</a> (void)</td></tr>
- <tr class="separator:a5b2424c890256b56552b9633a9d7df24"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a7ccdc4e5dbc8506a372139af100f74bc"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a7ccdc4e5dbc8506a372139af100f74bc">DestroyAutopatcherTables</a> (void)</td></tr>
- <tr class="separator:a7ccdc4e5dbc8506a372139af100f74bc"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a7abdeae48adff85a2df7ae385bd541ef"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a7abdeae48adff85a2df7ae385bd541ef">AddApplication</a> (const char *applicationName, const char *userName)</td></tr>
- <tr class="separator:a7abdeae48adff85a2df7ae385bd541ef"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a152d2cafd30025dd1967b60c5228a821"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a152d2cafd30025dd1967b60c5228a821">RemoveApplication</a> (const char *applicationName)</td></tr>
- <tr class="separator:a152d2cafd30025dd1967b60c5228a821"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a8ddaadafaa25742b0816342791aab1a2"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a8ddaadafaa25742b0816342791aab1a2">UpdateApplicationFiles</a> (const char *applicationName, const char *applicationDirectory, const char *userName, <a class="el" href="classRakNet_1_1FileListProgress.html">FileListProgress</a> *cb)</td></tr>
- <tr class="separator:a8ddaadafaa25742b0816342791aab1a2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a7f4c39d5d8697283f9535e5ee9074f4a"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a7f4c39d5d8697283f9535e5ee9074f4a">GetChangelistSinceDate</a> (const char *applicationName, FileList *addedOrModifiedFilesWithHashData, FileList *deletedFiles, double sinceDate)</td></tr>
- <tr class="separator:a7f4c39d5d8697283f9535e5ee9074f4a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aa56efe5018eb82ffad538aa5662301b3"><td class="memItemLeft" align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#aa56efe5018eb82ffad538aa5662301b3">GetPatches</a> (const char *applicationName, FileList *input, bool allowDownloadOfOriginalUnmodifiedFiles, FileList *patchList)</td></tr>
- <tr class="separator:aa56efe5018eb82ffad538aa5662301b3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9c0f669267284290a74844000d4c0241"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a9c0f669267284290a74844000d4c0241">GetMostRecentChangelistWithPatches</a> (<a class="el" href="classRakNet_1_1RakString.html">RakNet::RakString</a> &applicationName, FileList *patchedFiles, FileList *addedFiles, FileList *addedOrModifiedFileHashes, FileList *deletedFiles, double *priorRowPatchTime, double *mostRecentRowPatchTime)</td></tr>
- <tr class="separator:a9c0f669267284290a74844000d4c0241"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a342c992202426d8f507246202acd63f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a342c992202426d8f507246202acd63f6"></a>
- virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a342c992202426d8f507246202acd63f6">GetLastError</a> (void) const </td></tr>
- <tr class="memdesc:a342c992202426d8f507246202acd63f6"><td class="mdescLeft"> </td><td class="mdescRight">If any of the above functions fail, the error string is stored internally. Call this to get it. <br/></td></tr>
- <tr class="separator:a342c992202426d8f507246202acd63f6"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ab3d49be04f7091bd9f122732a22281f2"><td class="memItemLeft" align="right" valign="top">virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#ab3d49be04f7091bd9f122732a22281f2">GetFilePart</a> (const char *filename, unsigned int startReadBytes, unsigned int numBytesToRead, void *preallocatedDestination, FileListNodeContext context)</td></tr>
- <tr class="separator:ab3d49be04f7091bd9f122732a22281f2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9bf197944711b2ceab918489d39c3d2a"><td class="memItemLeft" align="right" valign="top">virtual const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1AutopatcherPostgreRepository.html#a9bf197944711b2ceab918489d39c3d2a">GetIncrementalReadChunkSize</a> (void) const </td></tr>
- <tr class="separator:a9bf197944711b2ceab918489d39c3d2a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_classPostgreSQLInterface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classPostgreSQLInterface')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classPostgreSQLInterface.html">PostgreSQLInterface</a></td></tr>
- <tr class="memitem:a76c4ebdbd06ee57a4c69e5778c362724 inherit pub_methods_classPostgreSQLInterface"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><b>Connect</b> (const char *conninfo)</td></tr>
- <tr class="separator:a76c4ebdbd06ee57a4c69e5778c362724 inherit pub_methods_classPostgreSQLInterface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a761568edccdc320383683da86c5dfe7e inherit pub_methods_classPostgreSQLInterface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a761568edccdc320383683da86c5dfe7e"></a>
- void </td><td class="memItemRight" valign="bottom"><b>AssignConnection</b> (PGconn *_pgConn)</td></tr>
- <tr class="memdesc:a761568edccdc320383683da86c5dfe7e inherit pub_methods_classPostgreSQLInterface"><td class="mdescLeft"> </td><td class="mdescRight">Use a connection allocated elsewehre. <br/></td></tr>
- <tr class="separator:a761568edccdc320383683da86c5dfe7e inherit pub_methods_classPostgreSQLInterface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a0e783decf398d62cb6c3de2e884bcdca inherit pub_methods_classPostgreSQLInterface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e783decf398d62cb6c3de2e884bcdca"></a>
- PGconn * </td><td class="memItemRight" valign="bottom"><b>GetPGConn</b> (void) const </td></tr>
- <tr class="memdesc:a0e783decf398d62cb6c3de2e884bcdca inherit pub_methods_classPostgreSQLInterface"><td class="mdescLeft"> </td><td class="mdescRight">Get the instance of PGconn. <br/></td></tr>
- <tr class="separator:a0e783decf398d62cb6c3de2e884bcdca inherit pub_methods_classPostgreSQLInterface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a62e68986cdc1e9eb2f308bdc135570ca inherit pub_methods_classPostgreSQLInterface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e68986cdc1e9eb2f308bdc135570ca"></a>
- void </td><td class="memItemRight" valign="bottom"><b>Disconnect</b> (void)</td></tr>
- <tr class="memdesc:a62e68986cdc1e9eb2f308bdc135570ca inherit pub_methods_classPostgreSQLInterface"><td class="mdescLeft"> </td><td class="mdescRight">Disconnect from the database. <br/></td></tr>
- <tr class="separator:a62e68986cdc1e9eb2f308bdc135570ca inherit pub_methods_classPostgreSQLInterface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:afa782a9f3a3c49eb8a653361b664fdd4 inherit pub_methods_classPostgreSQLInterface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa782a9f3a3c49eb8a653361b664fdd4"></a>
- virtual const char * </td><td class="memItemRight" valign="bottom"><b>GetLastError</b> (void) const </td></tr>
- <tr class="memdesc:afa782a9f3a3c49eb8a653361b664fdd4 inherit pub_methods_classPostgreSQLInterface"><td class="mdescLeft"> </td><td class="mdescRight">If any of the above functions fail, the error string is stored internally. Call this to get it. <br/></td></tr>
- <tr class="separator:afa782a9f3a3c49eb8a653361b664fdd4 inherit pub_methods_classPostgreSQLInterface"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><p>An implementation of the <a class="el" href="classRakNet_1_1AutopatcherRepositoryInterface.html" title="An interface used by AutopatcherServer to get the data necessary to run an autopatcher. This is up to you to implement for custom repository solutions.">AutopatcherRepositoryInterface</a> to use PostgreSQL to store the relevant data </p>
- </div><h2 class="groupheader">Member Function Documentation</h2>
- <a class="anchor" id="a7abdeae48adff85a2df7ae385bd541ef"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool RakNet::AutopatcherPostgreRepository::AddApplication </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>userName</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Add an application for use by files. Call this second. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationName</td><td>A null terminated string. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">userName</td><td>Stored in the database, but otherwise unused. Useful to track who added this application. </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a5b2424c890256b56552b9633a9d7df24"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual bool RakNet::AutopatcherPostgreRepository::CreateAutopatcherTables </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Create the tables used by the autopatcher, for all applications. Call this first. </p>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a7ccdc4e5dbc8506a372139af100f74bc"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool RakNet::AutopatcherPostgreRepository::DestroyAutopatcherTables </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Destroy the tables used by the autopatcher. Don't call this unless you don't want to use the autopatcher anymore, or are testing. </p>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a7f4c39d5d8697283f9535e5ee9074f4a"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual bool RakNet::AutopatcherPostgreRepository::GetChangelistSinceDate </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>addedOrModifiedFilesWithHashData</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>deletedFiles</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double </td>
- <td class="paramname"><em>sinceDate</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Get list of files added and deleted since a certain date. This is used by <a class="el" href="classRakNet_1_1AutopatcherServer.html" title="The server plugin for the autopatcher. Must be running for the client to get patches.">AutopatcherServer</a> and not usually explicitly called. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationName</td><td>A null terminated string previously passed to AddApplication </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">addedFiles</td><td>A list of the current versions of filenames with SHA1_LENGTH byte hashes as their data that were created after <em>sinceData</em> </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">deletedFiles</td><td>A list of the current versions of filenames that were deleted after <em>sinceData</em> </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">sinceDate</td><td></td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- <p>Implements <a class="el" href="classRakNet_1_1AutopatcherRepositoryInterface.html#a54058b725b12eb1186a94ba4e77ae87a">RakNet::AutopatcherRepositoryInterface</a>.</p>
- </div>
- </div>
- <a class="anchor" id="ab3d49be04f7091bd9f122732a22281f2"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual unsigned int RakNet::AutopatcherPostgreRepository::GetFilePart </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>filename</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"><em>startReadBytes</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"><em>numBytesToRead</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">void * </td>
- <td class="paramname"><em>preallocatedDestination</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileListNodeContext </td>
- <td class="paramname"><em>context</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Read part of a file into <em>destination</em> Return the number of bytes written. Return 0 when file is done. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>Filename to read </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">startReadBytes</td><td>What offset from the start of the file to read from </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">numBytesToRead</td><td>How many bytes to read. This is also how many bytes have been allocated to preallocatedDestination </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">preallocatedDestination</td><td>Write your data here </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>The number of bytes read, or 0 if none </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a9bf197944711b2ceab918489d39c3d2a"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual const int RakNet::AutopatcherPostgreRepository::GetIncrementalReadChunkSize </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <dl class="section return"><dt>Returns</dt><dd>Passed to <a class="el" href="classRakNet_1_1FileListTransfer.html#ae0dd9c15eb9b045a2a912da9772271e2" title="Send the FileList structure to another system, which must have previously called SetupReceive().">FileListTransfer::Send()</a> as the _chunkSize parameter. </dd></dl>
- <p>Implements <a class="el" href="classRakNet_1_1AutopatcherRepositoryInterface.html#a37256a1ad98612546e6510140ca00d94">RakNet::AutopatcherRepositoryInterface</a>.</p>
- </div>
- </div>
- <a class="anchor" id="a9c0f669267284290a74844000d4c0241"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual bool RakNet::AutopatcherPostgreRepository::GetMostRecentChangelistWithPatches </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classRakNet_1_1RakString.html">RakNet::RakString</a> & </td>
- <td class="paramname"><em>applicationName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>patchedFiles</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>addedFiles</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>addedOrModifiedFileHashes</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>deletedFiles</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double * </td>
- <td class="paramname"><em>priorRowPatchTime</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double * </td>
- <td class="paramname"><em>mostRecentRowPatchTime</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>For the most recent update, return files that were patched, added, or deleted. For files that were patched, return both the patch in <em>patchedFiles</em> and the current version in <em>updatedFiles</em> </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in,out]</td><td class="paramname">applicationName</td><td>Name of the application to get patches for. If empty, uses the most recently updated application, and the string will be updated to reflect this name. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">patchedFiles</td><td>A list of patched files with op PC_HASH_2_WITH_PATCH. It has 2 hashes, the priorHash and the currentHash. The currentHash is checked on the client after patching for patch success. The priorHash is checked in AutopatcherServer::OnGetPatch() to see if the client is able to hash with the version they currently have </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">patchedFiles</td><td>A list of new files. It contains the actual data in addition to the filename </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">addedOrModifiedFileHashes</td><td>A list of file hashes that were either modified or new. This is returned to the client when replying to ID_AUTOPATCHER_CREATION_LIST, which tells the client what files have changed on the server since a certain date </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">deletedFiles</td><td>A list of the current versions of filenames that were deleted in the most recent patch </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">whenPatched</td><td>time in seconds since epoch when patched. Use time() function to get this in C </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>true on success, false on failure </dd></dl>
- <p>Implements <a class="el" href="classRakNet_1_1AutopatcherRepositoryInterface.html#a1244493706ecbd21fbbc8ce5e198ee59">RakNet::AutopatcherRepositoryInterface</a>.</p>
- </div>
- </div>
- <a class="anchor" id="aa56efe5018eb82ffad538aa5662301b3"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual int RakNet::AutopatcherPostgreRepository::GetPatches </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>input</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"><em>allowDownloadOfOriginalUnmodifiedFiles</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FileList * </td>
- <td class="paramname"><em>patchList</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Get patches (or files) for every file in input, assuming that input has a hash for each of those files. This is used by <a class="el" href="classRakNet_1_1AutopatcherServer.html" title="The server plugin for the autopatcher. Must be running for the client to get patches.">AutopatcherServer</a> and not usually explicitly called. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationName</td><td>A null terminated string previously passed to AddApplication </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>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. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">allowDownloadOfOriginalUnmodifiedFiles</td><td>If false, then if a file has never been modified and there is no hash for it in the input list, return false. This is to prevent clients from just downloading the game from the autopatcher. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">patchList</td><td>A list of files with either the filedata or the patch. This is a subset of <em>input</em>. 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 </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on database failure, -1 on tried to download original unmodified file </dd></dl>
- <p>Implements <a class="el" href="classRakNet_1_1AutopatcherRepositoryInterface.html#aa1e6f1fff8fa2ade2a82c437a5da6947">RakNet::AutopatcherRepositoryInterface</a>.</p>
- </div>
- </div>
- <a class="anchor" id="a152d2cafd30025dd1967b60c5228a821"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool RakNet::AutopatcherPostgreRepository::RemoveApplication </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationName</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Remove an application and files used by that application. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationName</td><td>A null terminated string previously passed to AddApplication </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a8ddaadafaa25742b0816342791aab1a2"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual bool RakNet::AutopatcherPostgreRepository::UpdateApplicationFiles </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>applicationDirectory</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>userName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classRakNet_1_1FileListProgress.html">FileListProgress</a> * </td>
- <td class="paramname"><em>cb</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>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. </p>
- <dl class="section note"><dt>Note</dt><dd>It takes 10 bytes of memory to create a patch per byte on disk for a file. So you should not have any files larger than 1/10th your server memory. </dd></dl>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationName</td><td>A null terminated string previously passed to AddApplication </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">applicationDirectory</td><td>The base directory of your application. All files in this directory and subdirectories are added. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">userName</td><td>Stored in the database, but otherwise unused. Useful to track who added this revision </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">cb</td><td>Callback to get progress updates. Pass 0 to not use. </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>True on success, false on failure. </dd></dl>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following file:<ul>
- <li>D:/temp/RakNet_PC/DependentExtensions/Autopatcher/AutopatcherPostgreRepository/<a class="el" href="AutopatcherPostgreRepository_8h.html">AutopatcherPostgreRepository.h</a></li>
- </ul>
- </div><!-- contents -->
- <!-- start footer part -->
- <hr class="footer"/><address class="footer"><small>
- Generated on Mon Jun 2 2014 20:10:29 for RakNet by  <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/>
- </a> 1.8.2
- </small></address>
- </body>
- </html>
|