Files
TS_WIFILED/docs/client_html/ar01s29.html
2020-04-04 17:21:07 +02:00

96 lines
53 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Filetransfer</title><link rel="stylesheet" href="ts3doc.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="TeamSpeak 3 Client SDK Developer Manual"><link rel="up" href="index.html" title="TeamSpeak 3 Client SDK Developer Manual"><link rel="prev" href="ar01s28.html" title="Miscellaneous functions"><link rel="next" href="ar01s30.html" title="FAQ"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><img id="logo" src="images/logo.png"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Filetransfer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ar01s28.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s30.html"><img src="images/next.png" alt="Next"></a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="filetransfer"></a>Filetransfer</h2></div></div></div><a class="indexterm" name="idm44835433025904"></a><p>The TeamSpeak SDK includes the ability to support filetransfer, like the regular TeamSpeak server and client offer. The Server can function as a file storage, which can be accessed by Clients who can up- and download files. Files are stored on the filesystem where the server is running.</p><p>In general, clients can initiate filetransfer actions like uploading or downloading a file, requesting file information (size, name, path etc.), list files in a directory and so on. The functions to call these actions are explained in detail below. In addition to the functions actively called, there are filetransfer related callbacks which are triggered when the server returned the requested information (e.g. list of files in a directory).</p><p>Each transfer is identified by a <em class="structfield"><code>transferID</code></em>, which is passed to most filetransfer functions. Transfer IDs are unique during the time of the transfer, but may be reused again some time after the previous transfer with the same ID has finished.</p><p>Files are organized on the server inside channels (identified by their <em class="structfield"><code>channelID</code></em>. The top-level directory in each channel is &#8220;<span class="quote">/</span>&#8221;. Subdirectories in each channel may exist and are defined with a path of the form &#8220;<span class="quote">/dir1/dir2</span>&#8221;. Subdirectories are optional and need to be created with <code class="function">ts3client_requestCreateDirectory</code>, the channel root directory always exists by default.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ft_funcs_info"></a>Query information</h3></div></div></div><p>The following functions allow to query information about a file transfer identified by its <em class="structfield"><code>transferID</code></em>.</p><p>Query the file name of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferFileName</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>char** <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835433015408"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Points to a C string containing the file name. Remember to call <code class="function">ts3client_freeMemory</code> to release the string, which is dynamically allocated in the clientlib.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the file path of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferFilePath</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>char** <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835433006752"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Points to a C string containing the file path. Remember to call <code class="function">ts3client_freeMemory</code> to release the string, which is dynamically allocated in the clientlib.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the remote path on the server of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferFileRemotePath</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>char** <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432998080"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Points to a C string containing the remote path on the server. Remember to call <code class="function">ts3client_freeMemory</code> to release the string, which is dynamically allocated in the clientlib.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the file size of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferFileSize</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>uint64* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432989408"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>File size of the transfer.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the currently transferred file size of the queried transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferFileSizeDone</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>uint64* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432981280"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Already transferred size of the transfer.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query if the specified transfer is an upload or download:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_isTransferSender</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>int* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432973136"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>1 == upload, 0 == download</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the status of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferStatus</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>int* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432965024"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Current status of the file transfer, specified by the struct <em class="structfield"><code>FileTransferState</code></em>:
</p><pre class="programlisting">enum FileTransferState {
FILETRANSFER_INITIALISING = 0,
FILETRANSFER_ACTIVE,
FILETRANSFER_FINISHED,
};</pre><p>
</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the current speed of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getCurrentTransferSpeed</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>float* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432955952"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Currently measured speed of the file transfer.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the average speed of the specified transfer:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getAverageTransferSpeed</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>float* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432947824"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Average speed of the file transfer.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query the time the specified transfer has used:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferRunTime</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>uint64* <var class="pdparam">result</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432939712"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the filetransfer we want to query.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Time the transfer has used.</p></li></ul></div><div class="literallayout"><p><br>
</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ft_funcs_transfers"></a>Initiate transfers</h3></div></div></div><p>The following functions implement the core functionality of filetransfers. They initiate new up- and downloads, request file info, delete and rename files, create directories, list directories etc.</p><p>Request uploading a local file to the server:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_sendFile</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">file</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">overwrite</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">resume</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">sourceDirectory</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char* <var class="pdparam">file</var></code>;<br><code>int <var class="pdparam">overwrite</var></code>;<br><code>int <var class="pdparam">resume</var></code>;<br><code>const char* <var class="pdparam">sourceDirectory</var></code>;<br><code>anyID* <var class="pdparam">result</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432925136"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Target channel ID in which the file should be uploaded.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>file</code></em></p><p>Filename of the local file, which is to be uploaded.</p></li><li><p><em class="parameter"><code>overwrite</code></em></p><p>1 == overwrite remote file if it exists, 0 = do not overwrite (operation will abort if remote file exists)</p></li><li><p><em class="parameter"><code>resume</code></em></p><p>If we have a previously halted transfer: 1 = resume, 0 = restart transfer</p></li><li><p><em class="parameter"><code>sourceDirectory</code></em></p><p>Local directory where the file to upload is located.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Pointer to memory where the transferID will be stored, if the transfer has been started successfully (when this function returns <em class="structfield"><code>ERROR_ok</code></em>).</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Request downloading a file from the server:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestFile</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">file</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">overwrite</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">resume</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">destinationDirectory</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">result</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char* <var class="pdparam">file</var></code>;<br><code>int <var class="pdparam">overwrite</var></code>;<br><code>int <var class="pdparam">resume</var></code>;<br><code>const char* <var class="pdparam">destinationDirectory</var></code>;<br><code>anyID* <var class="pdparam">result</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432898752"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Remote channel ID from which the file should be downloaded.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>file</code></em></p><p>Filename of the remote file, which is to be downloaded.</p></li><li><p><em class="parameter"><code>overwrite</code></em></p><p>1 == overwrite local file if it exists, 0 = do not overwrite (operation will abort if local file exists)</p></li><li><p><em class="parameter"><code>resume</code></em></p><p>If we have a previously halted transfer: 1 = resume, 0 = restart transfer</p></li><li><p><em class="parameter"><code>destinationDirectory</code></em></p><p>Local target directory name where the download file should be saved.</p></li><li><p><em class="parameter"><code>result</code></em></p><p>Pointer to memory where the transferID will be stored, if the transfer has been started successfully (when this function returns <em class="structfield"><code>ERROR_ok</code></em>).</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Pause a transfer, specified by its <em class="structfield"><code>transferID</code></em>:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_haltTransfer</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">deleteUnfinishedFile</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>anyID <var class="pdparam">transferID</var></code>;<br><code>int <var class="pdparam">deleteUnfinishedFile</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432875456"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the transfer that should be halted.</p></li><li><p><em class="parameter"><code>deleteUnfinishedFile</code></em></p><p>1 = delete the halted file, 0 = do not deleted halted file</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query list of files in a directory. The answer from the server will trigger the <code class="function">onFileListEvent</code> and <code class="function">onFileListFinishedEvent</code> callbacks with the requested information.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestFileList</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">path</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char* <var class="pdparam">path</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432859728"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Remote channel ID, from which we want to query the file list.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>path</code></em></p><p>Path inside the channel, defining the subdirectory. Top level path is &#8220;<span class="quote">/</span>&#8221;</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Query information of a specified file. The answer from the server will trigger the <code class="function">onFileInfoEvent</code> callback with the requested information.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestFileInfo</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">file</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char* <var class="pdparam">file</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432842512"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Remote channel ID, from which we want to query the file info.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>file</code></em></p><p>File name we want to request info from, needs to include the full path within the channel, e.g. &#8220;<span class="quote">/file</span>&#8221; for a top-level file or &#8220;<span class="quote">/dir1/dir2/file</span>&#8221; for a file located in a subdirectory.</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Request deleting one or more remote files on the server:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestDeleteFile</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">file</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char** <var class="pdparam">file</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432825088"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Remote channel ID, in which we want to delete the files.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>file</code></em></p><p>List of files we request to delete. Array must be NULL-terminated. The file names need to include the full path within the channel, e.g. &#8220;<span class="quote">/file</span>&#8221; for a top-level file or &#8220;<span class="quote">/dir1/dir2/file</span>&#8221; for a file located in a subdirectory.</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Request creating a directory:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestCreateDirectory</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">directoryPath</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">channelPW</var></code>;<br><code>const char* <var class="pdparam">directoryPath</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432807648"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>Remote channel ID, in which we want to create the directory.</p></li><li><p><em class="parameter"><code>channelPW</code></em></p><p>Optional channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>file</code></em></p><p>Name of the directory to create. The directory name needs to include the full path within the channel, e.g. &#8220;<span class="quote">/file</span>&#8221; for a top-level file or &#8220;<span class="quote">/dir1/dir2/file</span>&#8221; for a file located in a subdirectory.</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Request renaming or moving a file. If the source and target channels and paths are the same, the file will simply be renamed.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_requestRenameFile</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">fromChannelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">fromChannelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">toChannelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">toChannelPW</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">oldFile</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">newFile</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">fromChannelID</var></code>;<br><code>const char* <var class="pdparam">fromChannelPW</var></code>;<br><code>uint64 <var class="pdparam">toChannelID</var></code>;<br><code>const char* <var class="pdparam">toChannelPW</var></code>;<br><code>const char* <var class="pdparam">oldFile</var></code>;<br><code>const char* <var class="pdparam">newFile</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432788032"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server the file transfer operation will be requested.</p></li><li><p><em class="parameter"><code>fromChannelID</code></em></p><p>Source channel ID, in which we want to rename the file.</p></li><li><p><em class="parameter"><code>fromChannelPW</code></em></p><p>Optional source channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>toChannelID</code></em></p><p>Target channel ID, to which we want to move the file. If the file should not be moved to another channel, this parameter should be equal to <em class="parameter"><code>fromChannelID</code></em>.</p></li><li><p><em class="parameter"><code>toChannelPW</code></em></p><p>Optional target channel password. Pass empty string if unused.</p></li><li><p><em class="parameter"><code>oldFile</code></em></p><p>Old name of the file. The file name needs to include the full path within the channel, e.g. &#8220;<span class="quote">/file</span>&#8221; for a top-level file or &#8220;<span class="quote">/dir1/dir2/file</span>&#8221; for a file located in a subdirectory.</p></li><li><p><em class="parameter"><code>newFile</code></em></p><p>Target name of the directory to create. The directory name need to include the full path within the channel, e.g. &#8220;<span class="quote">/file</span>&#8221; for a top-level file or &#8220;<span class="quote">/dir1/dir2/file</span>&#8221; for a file located in a subdirectory.</p><p>To move files to another subdirectory in the same channel without renaming the file, <em class="parameter"><code>fromChannelID</code></em> has to be equal to <em class="parameter"><code>toChannelID</code></em>, keep the file name itself but just change the path.</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by the Client Lib function call which caused this error event.</p><p>See <a class="link" href="ar01s04.html#callingReturnCode" title="Return code">return code documentation</a>.</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ft_funcs_limits"></a>Speed limits</h3></div></div></div><p>The TeamSpeak SDK offers the possibility to control and finetune transfer speed limits. These limits can be applied to the complete server, specific virtual servers or for each individual transfer. By default the transfer speed is unlimited. Every file transfer should at least have a minimum speed limit of 5kb/s.</p><p>Neither the TeamSpeak client nor server will store any of those values. When used, they'll have to be set at each client start to be considered permanent. </p><p>To set the upload speed limit for all virtual servers in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_setInstanceSpeedLimitUp</b>(</code></td><td><var class="pdparam">newLimit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">newLimit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432763728"></a></p><p>To set the download speed limit for all virtual servers in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_setInstanceSpeedLimitDown</b>(</code></td><td><var class="pdparam">newLimit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">newLimit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432760352"></a></p><p>To get the upload speed limit for all virtual servers in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getInstanceSpeedLimitUp</b>(</code></td><td><var class="pdparam">limit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64* <var class="pdparam">limit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432756976"></a></p><p>To get the download speed limit for all virtual servers in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getInstanceSpeedLimitDown</b>(</code></td><td><var class="pdparam">limit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64* <var class="pdparam">limit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432753600"></a></p><p>To set the upload speed limit for the specified virtual server in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_setServerConnectionHandlerSpeedLimitUp</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">newLimit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">newLimit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432749472"></a></p><p>To set the download speed limit for the specified virtual server in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_setServerConnectionHandlerSpeedLimitDown</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">newLimit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">newLimit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432745328"></a></p><p>To get the upload speed limit for the specified virtual server in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getServerConnectionHandlerSpeedLimitUp</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">limit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64* <var class="pdparam">limit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432741184"></a></p><p>To get the download speed limit for the specified virtual server in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getServerConnectionHandlerSpeedLimitDown</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">limit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64* <var class="pdparam">limit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432737040"></a></p><p>To set the up- or download speed limit for the specified file transfer in bytes/s. Use <code class="function">ts3client_isTransferSender</code> to query if the transfer is an up- or download.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_setTransferSpeedLimit</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">newLimit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>uint64 <var class="pdparam">newLimit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432732432"></a></p><p>To get the speed limit for the specified file transfer in bytes/s:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned int <b class="fsfunc">ts3client_getTransferSpeedLimit</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">limit</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>uint64* <var class="pdparam">limit</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432728352"></a></p><div class="literallayout"><p><br>
</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ft_callbacks"></a>Callbacks</h3></div></div></div><p>This event is called when a file transfer, triggered by <code class="function">ts3client_sendFile</code> or <code class="function">ts3client_requestFile</code> has finished or aborted with an error.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">onFileTransferStatusEvent</b>(</code></td><td><var class="pdparam">transferID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">status</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">statusMessage</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">remotefileSize</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">serverConnectionHandlerID</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>anyID <var class="pdparam">transferID</var></code>;<br><code>unsigned int <var class="pdparam">status</var></code>;<br><code>const char* <var class="pdparam">statusMessage</var></code>;<br><code>uint64 <var class="pdparam">remotefileSize</var></code>;<br><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432719888"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>transferID</code></em></p><p>ID of the transfer. This ID was returned by the call to <code class="function">ts3client_sendFile</code> or <code class="function">ts3client_requestFile</code> which triggered this event.</p></li><li><p><em class="parameter"><code>status</code></em></p><p>Indicates how and why the transfer has finished:</p><div class="itemizedlist"><ul type="circle"><li><p><em class="parameter"><code>ERROR_file_transfer_complete</code></em></p><p>Transfer completed successfully.</p></li><li><p><em class="parameter"><code>ERROR_file_transfer_canceled</code></em></p><p>Transfer was halted by a call to <code class="function">ts3client_haltTransfer</code>.</p></li><li><p><em class="parameter"><code>ERROR_file_transfer_interrupted</code></em></p><p>An error occured, transfer was stopped for various reasons (network error etc.)</p></li><li><p><em class="parameter"><code>ERROR_file_transfer_reset</code></em></p><p>Transfer was reset. This can happen if the remote file has changed (another user uploaded another file under the same channel ID, path and file name).</p></li></ul></div></li><li><p><em class="parameter"><code>statusMessage</code></em></p><p>Status text message for a verbose display of the <em class="parameter"><code>status</code></em> parameter.</p></li><li><p><em class="parameter"><code>remotefileSize</code></em></p><p>Remote size of the file on the server.</p></li><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server on which the file list was requested.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Callback containing the reply by the server on ts3client_requestFileList. There event is called for every file in the specified path. After the last file, <code class="function">onFileListFinished</code> will indicate the end of the list.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">onFileListEvent</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">path</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">name</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">size</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">datetime</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">type</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">incompletesize</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">returnCode</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">path</var></code>;<br><code>const char* <var class="pdparam">name</var></code>;<br><code>uint64 <var class="pdparam">size</var></code>;<br><code>uint64 <var class="pdparam">datetime</var></code>;<br><code>int <var class="pdparam">type</var></code>;<br><code>uint64 <var class="pdparam">incompletesize</var></code>;<br><code>const char* <var class="pdparam">returnCode</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432693408"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server on which the file list was requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>ID of the channel which file list was requested.</p></li><li><p><em class="parameter"><code>path</code></em></p><p>Subdirectory inside the channel for which the file list was requested. &#8220;<span class="quote">/</span>&#8221; indicates the root directory is listed.</p></li><li><p><em class="parameter"><code>name</code></em></p><p>File name.</p></li><li><p><em class="parameter"><code>size</code></em></p><p>File size</p></li><li><p><em class="parameter"><code>datetime</code></em></p><p>File date (Unix time in seconds)</p></li><li><p><em class="parameter"><code>type</code></em></p><p>Indicates if this entry is a directory or a file. Type is specified as:</p><pre class="programlisting">enum {
FileListType_Directory = 0,
FileListType_File,
};</pre></li><li><p><em class="parameter"><code>incompletesize</code></em></p><p>If the file is currently still being transferred, this indicates the currently transferred file size.</p></li><li><p><em class="parameter"><code>returnCode</code></em></p><p>String containing the return code if it has been set by <code class="function">ts3client_requestFileList</code> which triggered this event.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Callback indicating the end of an incoming file list, see <code class="function">onFileList</code>.
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">onFileListFinishedEvent</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">path</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">path</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432671184"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server on which the file list was requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>If of the channel which files have been listed.</p></li><li><p><em class="parameter"><code>path</code></em></p><p>Path within the channel which files have been listed.</p></li></ul></div><div class="literallayout"><p><br>
</p></div><p>Callback containing the reply by the server for ts3client_requestFileInfo:
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">onFileInfoEvent</b>(</code></td><td><var class="pdparam">serverConnectionHandlerID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">channelID</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">name</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">size</var>, </td><td> </td></tr><tr><td> </td><td><var class="pdparam">datetime</var><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>uint64 <var class="pdparam">serverConnectionHandlerID</var></code>;<br><code>uint64 <var class="pdparam">channelID</var></code>;<br><code>const char* <var class="pdparam">name</var></code>;<br><code>uint64 <var class="pdparam">size</var></code>;<br><code>uint64 <var class="pdparam">datetime</var></code>;</div><div class="funcprototype-spacer"> </div></div><p>
<a class="indexterm" name="idm44835432659248"></a></p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>serverConnectionHandlerID</code></em></p><p>ID of the virtual server on which the file info was requested.</p></li><li><p><em class="parameter"><code>channelID</code></em></p><p>If of the channel in which the file is located.</p></li><li><p><em class="parameter"><code>name</code></em></p><p>File name including the path within the channel in which the file is located.</p></li><li><p><em class="parameter"><code>size</code></em></p><p>File size</p></li><li><p><em class="parameter"><code>datetime</code></em></p><p>File date (Unix time in seconds)</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s28.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s30.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Miscellaneous functions </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> FAQ</td></tr></table></div></body></html>