Files
ts-mobile-go/docs/teamspeak-sdk-3.5.2/doc/server_api.html
T

2356 lines
322 KiB
HTML
Raw Normal View History

2026-07-20 19:01:03 +08:00
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TeamSpeak Server Functions &mdash; TeamSpeak SDK documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=9edc463e" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=7f41d439"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Introduction" href="server/intro.html" />
<link rel="prev" title="TeamSpeak Client Functions" href="client_api.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
TeamSpeak SDK
<img src="_static/logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">API</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="errors.html">TeamSpeak Error Codes</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Property Enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="enumerations.html">Structures &amp; Enumerations</a></li>
<li class="toctree-l1"><a class="reference internal" href="client_api.html">TeamSpeak Client Functions</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">TeamSpeak Server Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#c.VirtualServerCreateFlags"><code class="docutils literal notranslate"><span class="pre">VirtualServerCreateFlags</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_NONE"><code class="docutils literal notranslate"><span class="pre">VIRTUALSERVER_CREATE_FLAG_NONE</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_PASSWORDS_ENCRYPTED"><code class="docutils literal notranslate"><span class="pre">VIRTUALSERVER_CREATE_FLAG_PASSWORDS_ENCRYPTED</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#c.ChannelCreateFlags"><code class="docutils literal notranslate"><span class="pre">ChannelCreateFlags</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_NONE"><code class="docutils literal notranslate"><span class="pre">CHANNEL_CREATE_FLAG_NONE</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_PASSWORDS_ENCRYPTED"><code class="docutils literal notranslate"><span class="pre">CHANNEL_CREATE_FLAG_PASSWORDS_ENCRYPTED</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_freeMemory"><code class="docutils literal notranslate"><span class="pre">ts3server_freeMemory()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_initServerLib"><code class="docutils literal notranslate"><span class="pre">ts3server_initServerLib()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_enableFileManager"><code class="docutils literal notranslate"><span class="pre">ts3server_enableFileManager()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_destroyServerLib"><code class="docutils literal notranslate"><span class="pre">ts3server_destroyServerLib()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_disableClientCommand"><code class="docutils literal notranslate"><span class="pre">ts3server_disableClientCommand()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getServerLibVersion"><code class="docutils literal notranslate"><span class="pre">ts3server_getServerLibVersion()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getServerLibVersionNumber"><code class="docutils literal notranslate"><span class="pre">ts3server_getServerLibVersionNumber()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setLogVerbosity"><code class="docutils literal notranslate"><span class="pre">ts3server_setLogVerbosity()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getGlobalErrorMessage"><code class="docutils literal notranslate"><span class="pre">ts3server_getGlobalErrorMessage()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getClientVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_getClientVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getClientVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_getClientVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getClientVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_getClientVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setClientVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_setClientVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setClientVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_setClientVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setClientVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_setClientVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_flushClientVariable"><code class="docutils literal notranslate"><span class="pre">ts3server_flushClientVariable()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setClientWhisperList"><code class="docutils literal notranslate"><span class="pre">ts3server_setClientWhisperList()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getClientList"><code class="docutils literal notranslate"><span class="pre">ts3server_getClientList()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelOfClient"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelOfClient()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_clientMove"><code class="docutils literal notranslate"><span class="pre">ts3server_clientMove()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_clientsKickFromServer"><code class="docutils literal notranslate"><span class="pre">ts3server_clientsKickFromServer()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getClientIDSfromUIDS"><code class="docutils literal notranslate"><span class="pre">ts3server_getClientIDSfromUIDS()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setChannelVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_setChannelVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setChannelVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_setChannelVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setChannelVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_setChannelVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_flushChannelVariable"><code class="docutils literal notranslate"><span class="pre">ts3server_flushChannelVariable()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_flushChannelCreation"><code class="docutils literal notranslate"><span class="pre">ts3server_flushChannelCreation()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_makeChannelCreationParams"><code class="docutils literal notranslate"><span class="pre">ts3server_makeChannelCreationParams()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setChannelCreationParams"><code class="docutils literal notranslate"><span class="pre">ts3server_setChannelCreationParams()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelCreationParamsVariables"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelCreationParamsVariables()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_createChannel"><code class="docutils literal notranslate"><span class="pre">ts3server_createChannel()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelList"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelList()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getChannelClientList"><code class="docutils literal notranslate"><span class="pre">ts3server_getChannelClientList()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getParentChannelOfChannel"><code class="docutils literal notranslate"><span class="pre">ts3server_getParentChannelOfChannel()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_channelDelete"><code class="docutils literal notranslate"><span class="pre">ts3server_channelDelete()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_channelMove"><code class="docutils literal notranslate"><span class="pre">ts3server_channelMove()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVirtualServerVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_setVirtualServerVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVirtualServerVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_setVirtualServerVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVirtualServerVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_setVirtualServerVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_flushVirtualServerVariable"><code class="docutils literal notranslate"><span class="pre">ts3server_flushVirtualServerVariable()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_makeVirtualServerCreationParams"><code class="docutils literal notranslate"><span class="pre">ts3server_makeVirtualServerCreationParams()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVirtualServerCreationParams"><code class="docutils literal notranslate"><span class="pre">ts3server_setVirtualServerCreationParams()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerCreationParamsVariables"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerCreationParamsVariables()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerCreationParamsChannelCreationParams"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerCreationParamsChannelCreationParams()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_createVirtualServer2"><code class="docutils literal notranslate"><span class="pre">ts3server_createVirtualServer2()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerConnectionVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerConnectionVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerConnectionVariableAsDouble"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerConnectionVariableAsDouble()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerList"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerList()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_stopVirtualServer"><code class="docutils literal notranslate"><span class="pre">ts3server_stopVirtualServer()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_createVirtualServer"><code class="docutils literal notranslate"><span class="pre">ts3server_createVirtualServer()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVirtualServerKeyPair"><code class="docutils literal notranslate"><span class="pre">ts3server_getVirtualServerKeyPair()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_createSecuritySalt"><code class="docutils literal notranslate"><span class="pre">ts3server_createSecuritySalt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_calculateSecurityHash"><code class="docutils literal notranslate"><span class="pre">ts3server_calculateSecurityHash()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_getVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_getVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_getVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_getVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVariableAsInt"><code class="docutils literal notranslate"><span class="pre">ts3server_setVariableAsInt()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVariableAsUInt64"><code class="docutils literal notranslate"><span class="pre">ts3server_setVariableAsUInt64()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ts3server_setVariableAsString"><code class="docutils literal notranslate"><span class="pre">ts3server_setVariableAsString()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#c.ServerLibFunctions"><code class="docutils literal notranslate"><span class="pre">ServerLibFunctions</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onVoiceDataEvent"><code class="docutils literal notranslate"><span class="pre">onVoiceDataEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientStartTalkingEvent"><code class="docutils literal notranslate"><span class="pre">onClientStartTalkingEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientStopTalkingEvent"><code class="docutils literal notranslate"><span class="pre">onClientStopTalkingEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientConnected"><code class="docutils literal notranslate"><span class="pre">onClientConnected</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientDisconnected"><code class="docutils literal notranslate"><span class="pre">onClientDisconnected</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientMoved"><code class="docutils literal notranslate"><span class="pre">onClientMoved</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onChannelCreated"><code class="docutils literal notranslate"><span class="pre">onChannelCreated</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onChannelEdited"><code class="docutils literal notranslate"><span class="pre">onChannelEdited</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onChannelDeleted"><code class="docutils literal notranslate"><span class="pre">onChannelDeleted</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onServerTextMessageEvent"><code class="docutils literal notranslate"><span class="pre">onServerTextMessageEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onChannelTextMessageEvent"><code class="docutils literal notranslate"><span class="pre">onChannelTextMessageEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onUserLoggingMessageEvent"><code class="docutils literal notranslate"><span class="pre">onUserLoggingMessageEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onAccountingErrorEvent"><code class="docutils literal notranslate"><span class="pre">onAccountingErrorEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onCustomPacketEncryptEvent"><code class="docutils literal notranslate"><span class="pre">onCustomPacketEncryptEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onCustomPacketDecryptEvent"><code class="docutils literal notranslate"><span class="pre">onCustomPacketDecryptEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onFileTransferEvent"><code class="docutils literal notranslate"><span class="pre">onFileTransferEvent</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientCanConnect"><code class="docutils literal notranslate"><span class="pre">permClientCanConnect</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientCanGetChannelDescription"><code class="docutils literal notranslate"><span class="pre">permClientCanGetChannelDescription</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientUpdate"><code class="docutils literal notranslate"><span class="pre">permClientUpdate</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientKickFromChannel"><code class="docutils literal notranslate"><span class="pre">permClientKickFromChannel</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientKickFromServer"><code class="docutils literal notranslate"><span class="pre">permClientKickFromServer</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permClientMove"><code class="docutils literal notranslate"><span class="pre">permClientMove</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permChannelMove"><code class="docutils literal notranslate"><span class="pre">permChannelMove</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permSendTextMessage"><code class="docutils literal notranslate"><span class="pre">permSendTextMessage</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permServerRequestConnectionInfo"><code class="docutils literal notranslate"><span class="pre">permServerRequestConnectionInfo</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permSendConnectionInfo"><code class="docutils literal notranslate"><span class="pre">permSendConnectionInfo</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permChannelCreate"><code class="docutils literal notranslate"><span class="pre">permChannelCreate</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permChannelEdit"><code class="docutils literal notranslate"><span class="pre">permChannelEdit</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permChannelDelete"><code class="docutils literal notranslate"><span class="pre">permChannelDelete</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permChannelSubscribe"><code class="docutils literal notranslate"><span class="pre">permChannelSubscribe</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferInitUpload"><code class="docutils literal notranslate"><span class="pre">permFileTransferInitUpload</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferInitDownload"><code class="docutils literal notranslate"><span class="pre">permFileTransferInitDownload</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferGetFileInfo"><code class="docutils literal notranslate"><span class="pre">permFileTransferGetFileInfo</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferGetFileList"><code class="docutils literal notranslate"><span class="pre">permFileTransferGetFileList</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferDeleteFile"><code class="docutils literal notranslate"><span class="pre">permFileTransferDeleteFile</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferCreateDirectory"><code class="docutils literal notranslate"><span class="pre">permFileTransferCreateDirectory</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.permFileTransferRenameFile"><code class="docutils literal notranslate"><span class="pre">permFileTransferRenameFile</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onClientPasswordEncrypt"><code class="docutils literal notranslate"><span class="pre">onClientPasswordEncrypt</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onTransformFilePath"><code class="docutils literal notranslate"><span class="pre">onTransformFilePath</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onCustomServerPasswordCheck"><code class="docutils literal notranslate"><span class="pre">onCustomServerPasswordCheck</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#c.ServerLibFunctions.onCustomChannelPasswordCheck"><code class="docutils literal notranslate"><span class="pre">onCustomChannelPasswordCheck</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Server</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="server/intro.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/basic.html">Getting started</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/list-items.html">List available clients, channels, servers</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/vserver-manage.html">Create and stop virtual servers</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/advanced-create.html">Advanced virtual server creation</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/info.html">Retrieve and store information</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/channels.html">Managing channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/clients.html">Managing clients</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/whisper.html">Whisper lists</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/encryption.html">Custom encryption</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/passwords.html">Custom passwords</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/permissions.html">Permission checks</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/security-salt.html">Security salts and hashes</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/disable-commands.html">Disabling protocol commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/filetransfer.html">Filetransfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="server/faq.html">FAQ</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Client</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="client/intro.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/basic.html">Getting started</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/connections.html">Managing server connections</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/logging.html">Logging</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/audio.html">Client Audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/wave-files.html">Playing wave files</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/3dsound.html">3D Sound</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/whisper.html">Whisper lists</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/voice-encryption.html">Channel voice data encryption</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/info.html">Retrieve and store information</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/channels.html">Channel Management</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/client-list.html">List clients</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/client-kick.html">Kicking clients</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/local-mute.html">Muting other clients</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/textmessages.html">Text chat</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/filetransfer.html">Filetransfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/encryption.html">Custom encryption</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/passwords.html">Custom passwords</a></li>
<li class="toctree-l1"><a class="reference internal" href="client/faq.html">FAQ</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">TeamSpeak SDK</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">TeamSpeak Server Functions</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="teamspeak-server-functions">
<h1>TeamSpeak Server Functions<a class="headerlink" href="#teamspeak-server-functions" title="Link to this heading"></a></h1>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-enums">Enums</p>
<dl class="c enum">
<dt class="sig sig-object c" id="c.VirtualServerCreateFlags">
<span class="target" id="serverlib_8h_1a065f4f9ad6e60befd2020b457e0f113e"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">VirtualServerCreateFlags</span></span></span><a class="headerlink" href="#c.VirtualServerCreateFlags" title="Link to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt class="sig sig-object c" id="c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_NONE">
<span class="target" id="serverlib_8h_1a065f4f9ad6e60befd2020b457e0f113ea8cdef0d47e52fb4b5a2c6ad51ec15ae6"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">VIRTUALSERVER_CREATE_FLAG_NONE</span></span></span><a class="headerlink" href="#c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_NONE" title="Link to this definition"></a><br /></dt>
<dd><p>Server password is stored plaintext and will be encrypted by the server library before stored. </p>
</dd></dl>
<dl class="c enumerator">
<dt class="sig sig-object c" id="c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_PASSWORDS_ENCRYPTED">
<span class="target" id="serverlib_8h_1a065f4f9ad6e60befd2020b457e0f113ea0cec7fce726ab11c66cb180d4ec746be"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">VIRTUALSERVER_CREATE_FLAG_PASSWORDS_ENCRYPTED</span></span></span><a class="headerlink" href="#c.VirtualServerCreateFlags.VIRTUALSERVER_CREATE_FLAG_PASSWORDS_ENCRYPTED" title="Link to this definition"></a><br /></dt>
<dd><p>Server password is already encrypted in the creation parameters. Will be stored as is. </p>
</dd></dl>
</dd></dl>
<dl class="c enum">
<dt class="sig sig-object c" id="c.ChannelCreateFlags">
<span class="target" id="serverlib_8h_1a8c51f552b923268b6fb5d67e95c39f78"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ChannelCreateFlags</span></span></span><a class="headerlink" href="#c.ChannelCreateFlags" title="Link to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt class="sig sig-object c" id="c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_NONE">
<span class="target" id="serverlib_8h_1a8c51f552b923268b6fb5d67e95c39f78a1548f5a44553e191880884d5c68e2dcf"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CHANNEL_CREATE_FLAG_NONE</span></span></span><a class="headerlink" href="#c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_NONE" title="Link to this definition"></a><br /></dt>
<dd><p>Channel password is stored plaintext and will be encrypted by the server library before stored. </p>
</dd></dl>
<dl class="c enumerator">
<dt class="sig sig-object c" id="c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_PASSWORDS_ENCRYPTED">
<span class="target" id="serverlib_8h_1a8c51f552b923268b6fb5d67e95c39f78acb065cf030f91e1c42a24f9215481cb4"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CHANNEL_CREATE_FLAG_PASSWORDS_ENCRYPTED</span></span></span><a class="headerlink" href="#c.ChannelCreateFlags.CHANNEL_CREATE_FLAG_PASSWORDS_ENCRYPTED" title="Link to this definition"></a><br /></dt>
<dd><p>Channel passwords are already encrypted in the creation parameters. Will be stored as is. </p>
</dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-functions">Functions</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_freeMemory">
<span class="target" id="serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_freeMemory</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">pointer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_freeMemory" title="Link to this definition"></a><br /></dt>
<dd><p>Releases memory allocated by the server library. </p>
<p>For every function that has output parameters which take pointers to memory (e.g. char**) the server library will allocate sufficient memory for you, however you need to take care of releasing the memory by passing the variable to this function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>pointer</strong> pointer to memory allocated by server library </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_initServerLib">
<span class="target" id="serverlib_8h_1a4eb2277bdac2e16f0d0fa2620fa73ecd"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_initServerLib</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="server/encryption.html#c.ServerLibFunctions" title="ServerLibFunctions"><span class="n"><span class="pre">ServerLibFunctions</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">functionPointers</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">usedLogTypes</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">logFileFolder</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">argc</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">argv</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>initializes the server library and defines callback functions </p>
<p>This is the first function you need to call, before this all calls to the server library will fail. In this call you will also set the functions you would like to have called when certain changes or events happen. This function must not be called multiple times.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>functionPointers</strong> defines which functions in your code are to be called on specific events. Zero initialize it and assign the desired function to call to the respective members of the <a class="reference internal" href="#struct_server_lib_functions"><span class="std std-ref">ServerLibFunctions</span></a> struct </p></li>
<li><p><strong>usedLogTypes</strong> a combination of values from the <a class="reference internal" href="enumerations.html#logtypes_8h_1a0e4c244f5254ca12ffeadcaf83e225b4"><span class="std std-ref">LogTypes</span></a> enum. Specifies which type(s) of logging you would like to use. </p></li>
<li><p><strong>logFileFolder</strong> path in which to create log files. Pass 0 to use the default of using a folder called logs in the working directory. </p></li>
<li><p><strong>argc</strong> The number of arguments provided to the application in argv. Used to process command line arguments </p></li>
<li><p><strong>argv</strong> The command line arguments provided to the application. These will be processed prior to server lib initialization. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_enableFileManager">
<span class="target" id="serverlib_8h_1a4f013fc7cccb234a34fdecf5081bdc3e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_enableFileManager</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">filebase</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ips</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">port</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">downloadBandwidth</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">uploadBandwidth</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Initialize the file transfer subsystem. Allows clients to store files on the machine the server is running on and download them. </p>
<p>If you want to support file transfer functionality, then call this function after calling <a class="reference internal" href="#serverlib_8h_1a4eb2277bdac2e16f0d0fa2620fa73ecd"><span class="std std-ref">ts3server_initServerLib</span></a> If you dont call this function file transfer features will not be available. The server library will create the directories necessary for storing files as needed, however directories will not be cleaned up by the server library. Instead it is the responsibility of the application to clean up these directories when theyre no longer needed (e.g. after a virtual server was deleted)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filebase</strong> path to where the server library will create necessary directories and store files uploaded by clients. </p></li>
<li><p><strong>ips</strong> zero terminated array of IP addresses to listen on for file transfer connections. IPv4 and IPv6 addresses are supported, do NOT pass host names. If set to 0, it will be treated as if you passed { “0.0.0.0”, “::”, 0 } </p></li>
<li><p><strong>port</strong> the TCP port to listen on for file transfer connections. </p></li>
<li><p><strong>downloadBandwidth</strong> limit in bytes per second which is available for downloading files from the server. Speed across all transfers will be limited to this number. Specify BANDWIDTH_LIMIT_UNLIMITED for no limit. </p></li>
<li><p><strong>uploadBandwidth</strong> limit in bytes per second which is available for uploading files to the server. Speed across all transfers will be limited to this number. Specify BANDWIDTH_LIMIT_UNLIMITED for no limit. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_destroyServerLib">
<span class="target" id="serverlib_8h_1a76909dda104ab2447565a527b25d3d6b"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_destroyServerLib</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><br /></dt>
<dd><p>Destroys the server lib. Must not be called from within a callback. </p>
<p>All clients will lose connection and timeout, all servers will terminate. This is the last function to call. After this call you will no longer be able to use any server library functions.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_disableClientCommand">
<span class="target" id="serverlib_8h_1ae7d715dd171fc6153bdc7eb7cf1b0b76"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_disableClientCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">clientCommand</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Prevents clients from performing certain actions. SDK only. </p>
<p>Use this to disable certain features for clients, e.g. deleting channels or moving clients so that the server has authority over these matters and is the only entity who can do so. To disable multiple commands, call this function once for each command you would like to disable for clients.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>clientCommand</strong> the command to disable. One of the values from the <a class="reference internal" href="enumerations.html#public__definitions_8h_1a018ea5b8dcbbf3852163d9a8b17bb311"><span class="std std-ref">ClientCommand</span></a> enum </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getServerLibVersion">
<span class="target" id="serverlib_8h_1a5660c9dcc7d88e4780cc673322263a10"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getServerLibVersion</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Retrieve the server version string. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> address of a variable to receive the server version. Memory is allocated by the server library and must be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getServerLibVersionNumber">
<span class="target" id="serverlib_8h_1af5dba020f7be0b1911491975961adedf"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getServerLibVersionNumber</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Retrieve the server version number. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> address of a variable to receive the server version number. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setLogVerbosity">
<span class="target" id="serverlib_8h_1a3e266c0a613fe2bd8a0a7df7a4d32f5e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setLogVerbosity</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="n"><span class="pre">LogLevel</span></span><span class="w"> </span><span class="n"><span class="pre">logVerbosity</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_setLogVerbosity" title="Link to this definition"></a><br /></dt>
<dd><p>Specify which log messages to send to the <a class="reference internal" href="#struct_server_lib_functions_1a9899779b855cfcbe9a90ce3e845f2a26"><span class="std std-ref">ServerLibFunctions::onUserLoggingMessageEvent</span></a> callback. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>logVerbosity</strong> Minimum verbosity of a log message to pass to the callback. One of the values from the LogLevel enum. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getGlobalErrorMessage">
<span class="target" id="serverlib_8h_1aafaaa905dbf79a68a09579ebefbca42e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getGlobalErrorMessage</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">globalErrorCode</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get a human readable error description string for an error code </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>globalErrorCode</strong> the error code to retrieve the description for. One of the values from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum. </p></li>
<li><p><strong>result</strong> address of a variable to receive the error description as a utf8 encoded c string. Memory is allocated by the server library and must be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getClientVariableAsInt">
<span class="target" id="serverlib_8h_1abb3f345fe47b075f2b6e296a5c18a876"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getClientVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a client variable as integer. </p>
<p>Not all variables are available as integer, some are only available as string or unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the variable queried. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getClientVariableAsUInt64">
<span class="target" id="serverlib_8h_1a24d9b278517f5d9092a7c502dcba38cf"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getClientVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a client variable as unsigned 64 bit integer. </p>
<p>Not all variables are available as unsigned 64 bit integer, some are only available as string or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the variable queried. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getClientVariableAsString">
<span class="target" id="serverlib_8h_1afcc963db23bb671d2f1b5b759e22d6b7"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getClientVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of the client variable as string </p>
<p>Not all variables are available as string, some are only available as unsigned 64 bit integer or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the variable queried. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setClientVariableAsInt">
<span class="target" id="serverlib_8h_1aa54bdc5dd91f7eb3426a1a2bf4cb5419"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setClientVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a client variable. </p>
<p>Not all variables can be set as integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setClientVariableAsUInt64">
<span class="target" id="serverlib_8h_1aedd0bb6132b342d4d0b03d6ee1353be0"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setClientVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a client variable. </p>
<p>Not all variables can be set as unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setClientVariableAsString">
<span class="target" id="serverlib_8h_1a82dac4803c592bfb0a6e6004643735fe"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setClientVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ClientProperties" title="ClientProperties"><span class="n"><span class="pre">ClientProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a client variable. </p>
<p>Not all variables can be set as string.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> which client to query </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a107aa6e685b210b43b62c6227252bb01"><span class="std std-ref">ClientProperties</span></a> enum. </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_flushClientVariable">
<span class="target" id="serverlib_8h_1a1925694653716a0993d836a889f3e78a"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_flushClientVariable</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_flushClientVariable" title="Link to this definition"></a><br /></dt>
<dd><p>Apply and publish client changes after setting client variables. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> the client which we have changed variables for. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setClientWhisperList">
<span class="target" id="serverlib_8h_1a950ac9f182bb968343fdb2c8eb691ede"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setClientWhisperList</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientID</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set a clients whisper list. Will stop transmitting that clients voice to their current channel. </p>
<p>The client will still receive voice from their current channel, however their voice will not be transmitted to their current channel anymore. The voice data of the specified client will be transmitted to all specified channels and all the specified clients. Pass 0 to both channelID and clientID to restore default behavior of transmitting voice to current channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which to set the whisper list </p></li>
<li><p><strong>clID</strong> the client for which to set the whisper list </p></li>
<li><p><strong>channelID</strong> zero terminated array of channel ids to add to the whisper list. Pass nullptr to reset. Like { 3, 94, 84, …, 0 } </p></li>
<li><p><strong>clientID</strong> zero terminated array of client ids to add to the whisper list. Pass nullptr to reset. Like { 1, 4, …, 0 } </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getClientList">
<span class="target" id="serverlib_8h_1aaad025f02002b576792f29872015c94c"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getClientList</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get a list of all clients connected to a server </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server on which to get the list of clients </p></li>
<li><p><strong>result</strong> address of a variable to receive the zero terminated list of clients, like {1, 2, 50, …, 0} Memory is allocated by the server library and caller must free the array using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelOfClient">
<span class="target" id="serverlib_8h_1aa28ae0411b7ba62a813d0cf18d463f15"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelOfClient</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the id of the clients current channel </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is on </p></li>
<li><p><strong>clientID</strong> the client to get the channel of </p></li>
<li><p><strong>result</strong> address of a variable to receive the channel id </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_clientMove">
<span class="target" id="serverlib_8h_1a7c9a1c6a844ef264d23284a7c1c21788"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_clientMove</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newChannelID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientIDArray</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Move one or more clients to a different channel. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the client is connected to </p></li>
<li><p><strong>newChannelID</strong> the id of the channel to move the client(s) to </p></li>
<li><p><strong>clientIDArray</strong> zero terminated array of client ids to move. Like {4, 9, …, 0} </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_clientsKickFromServer">
<span class="target" id="serverlib_8h_1a44f9d78735a9e1dba0440d57bdbe5ca8"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_clientsKickFromServer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientIDArray</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">kickReason</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">failOnClientError</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>kick one or more clients from the server, terminating their connection. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server the client(s) are connected to </p></li>
<li><p><strong>clientIDArray</strong> zero terminated array of client ids to kick. Like {4, 3, 12, …, 0} </p></li>
<li><p><strong>kickReason</strong> utf8 encoded c string describing the reason for the kick. Pass an empty string if unused. </p></li>
<li><p><strong>failOnClientError</strong> boolean flag. If 1 the function will fail if clients to be kicked are not on the server. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getClientIDSfromUIDS">
<span class="target" id="serverlib_8h_1ad42fd682eea13a8cadd9da47299b3391"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getClientIDSfromUIDS</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientUIDs</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_getClientIDSfromUIDS" title="Link to this definition"></a><br /></dt>
<dd><p>get a list of clients that are using one of the specified public identities </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server to check for clients on </p></li>
<li><p><strong>clientUIDs</strong> address of a zero terminated array containing the client unique identifiers to find client ids for. Like { “uid1”, “uid2”, …, &#64;0 } </p></li>
<li><p><strong>result</strong> address of a variable to receive the client ids using any of the supplied unique identifiers. Memory is allocated by the server library and caller must free the array using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelVariableAsInt">
<span class="target" id="serverlib_8h_1ac4eb6933ae60a4249aaf8371e0a350c0"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get value of a channel variable as integer. </p>
<p>Not all variables are available as integer, some are only available as string or unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the channel is located on </p></li>
<li><p><strong>channelID</strong> the id of the channel to get the variable for </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the queried variable. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelVariableAsUInt64">
<span class="target" id="serverlib_8h_1a8897e043802e94699ffba96a7e22df28"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get value of a channel variable as unsigned 64 bit integer. </p>
<p>Not all variables are available as unsigned 64 bit integer, some are only available as string or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the channel is located on </p></li>
<li><p><strong>channelID</strong> the id of the channel to get the variable for </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the queried variable. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelVariableAsString">
<span class="target" id="serverlib_8h_1a177c26b7404828248f23590697cffe77"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get value of a channel variable as string. </p>
<p>Not all variables are available as string, some are only available as integer or unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the channel is located on </p></li>
<li><p><strong>channelID</strong> the id of the channel to get the variable for </p></li>
<li><p><strong>flag</strong> specifies which variable to retrieve. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the queried variable. Memory is allocated by the server library and caller must free it using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setChannelVariableAsInt">
<span class="target" id="serverlib_8h_1a9d606e3815260bef7abe609c58ad843f"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setChannelVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the variable of a channel to a new value. </p>
<p>Call <a class="reference internal" href="#serverlib_8h_1ac4eb0eaedc70cfef1d3ceccfebcfd971"><span class="std std-ref">ts3server_flushChannelVariable</span></a> after having set all variables you need to change.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies the server the channel is located on </p></li>
<li><p><strong>channelID</strong> specifies the channel on which to change the variable </p></li>
<li><p><strong>flag</strong> specifies which variable to change. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setChannelVariableAsUInt64">
<span class="target" id="serverlib_8h_1af1c7814a4cab7b82d78ab310989cd5c1"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setChannelVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set a channel variable </p>
<p>Call <a class="reference internal" href="#serverlib_8h_1ac4eb0eaedc70cfef1d3ceccfebcfd971"><span class="std std-ref">ts3server_flushChannelVariable</span></a> after having set all variables you need to change.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which the channel is located </p></li>
<li><p><strong>channelID</strong> the id of the channel to set the variable for </p></li>
<li><p><strong>flag</strong> specifies which variable to set. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setChannelVariableAsString">
<span class="target" id="serverlib_8h_1a2e115e88aaadb1fe4496442eb1daac51"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setChannelVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ChannelProperties" title="ChannelProperties"><span class="n"><span class="pre">ChannelProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Call <a class="reference internal" href="#serverlib_8h_1ac4eb0eaedc70cfef1d3ceccfebcfd971"><span class="std std-ref">ts3server_flushChannelVariable</span></a> after having set all variables you need to change. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which the channel is located </p></li>
<li><p><strong>channelID</strong> the id of the channel to set the variable for </p></li>
<li><p><strong>flag</strong> specifies which variable to set. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1ab1d8599705a3a954dc5dce71774488fc"><span class="std std-ref">ChannelProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_flushChannelVariable">
<span class="target" id="serverlib_8h_1ac4eb0eaedc70cfef1d3ceccfebcfd971"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_flushChannelVariable</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_flushChannelVariable" title="Link to this definition"></a><br /></dt>
<dd><p>After changing channel variables call this function to publish the changes to connected clients. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which channels were edited </p></li>
<li><p><strong>channelID</strong> the channel which variables were changed </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_flushChannelCreation">
<span class="target" id="serverlib_8h_1a888a07d80276739a3071a168232d6c99"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_flushChannelCreation</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelParentID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>After setting the channel properties on a new channel, call this function to publish the channel to clients. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which to create the channel </p></li>
<li><p><strong>channelParentID</strong> the id of the parent channel for the new channel </p></li>
<li><p><strong>result</strong> address of a variable to receive the channel id of the newly created channel </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_makeChannelCreationParams">
<span class="target" id="serverlib_8h_1a1eebf07588b2f72c4fe7d77442382e26"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_makeChannelCreationParams</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3ChannelCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Create a structure that defines channel properties for use with <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a>. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> address of a variable to receive a pointer to the structure. Pointer must not be freed! After receiving the structure pointer, it must be filled using <a class="reference internal" href="#serverlib_8h_1aa902981e442f7f3eba09518e70b19268"><span class="std std-ref">ts3server_setChannelCreationParams</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setChannelCreationParams">
<span class="target" id="serverlib_8h_1aa902981e442f7f3eba09518e70b19268"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setChannelCreationParams</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3ChannelCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">channelCreationParams</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelParentID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Specify mandatory details of a channel to be created at server creation using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a>. </p>
<p>Must be called after <a class="reference internal" href="#serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"><span class="std std-ref">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></a> to set basic properties of a channel. After this call you may set additional channel properties by calling <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a> and <a class="reference internal" href="#serverlib_8h_1a08ad40944701d279e0d417f30bebb035"><span class="std std-ref">ts3server_setVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"><span class="std std-ref">ts3server_setVariableAsUInt64</span></a> or <a class="reference internal" href="#serverlib_8h_1a1b584647b5c91c42707494ab631c9213"><span class="std std-ref">ts3server_setVariableAsString</span></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channelCreationParams</strong> defines the channel for which we set basic properties. Obtained by calling <a class="reference internal" href="#serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"><span class="std std-ref">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></a></p></li>
<li><p><strong>channelParentID</strong> the id of the channel that this channel is a sub channel of. Pass 0 to make this channel a root channel. </p></li>
<li><p><strong>channelID</strong> the id this channel should have. Pass 0 to have the server lib assign a free ID. This is used to identify the channel in other calls to the client and server library. Must be unique across all virtual servers during the lifetime of the server library. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelCreationParamsVariables">
<span class="target" id="serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelCreationParamsVariables</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3ChannelCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">channelCreationParams</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Allows settings optional channel properties for channels to be created either at server creation using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or using <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a>. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channelCreationParams</strong> defines which channel to set variables for. Address of the structure obtained by calling <a class="reference internal" href="#serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"><span class="std std-ref">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></a> when the channel is to be created at server creation (using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a>) or obtained by calling <a class="reference internal" href="#serverlib_8h_1a1eebf07588b2f72c4fe7d77442382e26"><span class="std std-ref">ts3server_makeChannelCreationParams</span></a> when using with <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p></li>
<li><p><strong>result</strong> address of a variable to receive a pointer that is to be filled using <a class="reference internal" href="#serverlib_8h_1a08ad40944701d279e0d417f30bebb035"><span class="std std-ref">ts3server_setVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"><span class="std std-ref">ts3server_setVariableAsUInt64</span></a> or <a class="reference internal" href="#serverlib_8h_1a1b584647b5c91c42707494ab631c9213"><span class="std std-ref">ts3server_setVariableAsString</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_createChannel">
<span class="target" id="serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_createChannel</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3ChannelCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">channelCreationParams</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="#c.ChannelCreateFlags" title="ChannelCreateFlags"><span class="n"><span class="pre">ChannelCreateFlags</span></span></a><span class="w"> </span><span class="n"><span class="pre">flags</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>create a new channel on an existing virtual server. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which to create the channel. </p></li>
<li><p><strong>channelCreationParams</strong> defines channel properties. Address of the structure obtained by calling <a class="reference internal" href="#serverlib_8h_1a1eebf07588b2f72c4fe7d77442382e26"><span class="std std-ref">ts3server_makeChannelCreationParams</span></a> Must have been filled using <a class="reference internal" href="#serverlib_8h_1aa902981e442f7f3eba09518e70b19268"><span class="std std-ref">ts3server_setChannelCreationParams</span></a> before this call. </p></li>
<li><p><strong>flags</strong> defines how certain information is presented in the channelCreationParams. Combination of the values from the <a class="reference internal" href="#serverlib_8h_1a8c51f552b923268b6fb5d67e95c39f78"><span class="std std-ref">ChannelCreateFlags</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the channel id of the newly created channel. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelList">
<span class="target" id="serverlib_8h_1a21ce2480788dedb4573c6bff4d7ac1f4"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelList</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>list all channels on the server </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server to get the list of channels on </p></li>
<li><p><strong>result</strong> address of a variable to receive a zero terminted array of channel ids. Like {4, 65, 23, …, 0} Memory is allocated by the server library and caller must free the array using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getChannelClientList">
<span class="target" id="serverlib_8h_1a210b4c52e8dd7e8888bb01ed4ccaeb8f"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getChannelClientList</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get list of clients in a channel </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which the channel is located </p></li>
<li><p><strong>channelID</strong> the channel of which to get the list of clients </p></li>
<li><p><strong>result</strong> address of a variable to receive a zero terminated array of client ids in the channel. Like {3, 5, 39, …, 0} Memory is allocated by the server library and caller must free the array using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getParentChannelOfChannel">
<span class="target" id="serverlib_8h_1a1127f3c6bbfe103e0c68bbd7033037ec"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getParentChannelOfChannel</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the parent channel of a channel </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which the channel is located </p></li>
<li><p><strong>channelID</strong> the channel of which to get the parent channel </p></li>
<li><p><strong>result</strong> address of a variable to receive the parent channel id </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_channelDelete">
<span class="target" id="serverlib_8h_1a8752888c46b96f78029fb85deec6a4e4"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_channelDelete</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">force</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>delete a channel </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which the channel is located </p></li>
<li><p><strong>channelID</strong> the id of the channel to delete </p></li>
<li><p><strong>force</strong> boolean flag, 1 = delete even if there are clients or sub channels in the channel. 0 = fail if there are sub channels or clients in the channel or sub channels. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_channelMove">
<span class="target" id="serverlib_8h_1a6e76a13325c720837140176c0d1cf36e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_channelMove</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newChannelParentID</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newOrder</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>move a channel within the tree, make it a sub channel or root channel. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server on which to move a channel </p></li>
<li><p><strong>channelID</strong> the channel to move </p></li>
<li><p><strong>newChannelParentID</strong> id of the parent channel to move this channel into. Set to 0 to make this channel a root channel. </p></li>
<li><p><strong>newOrder</strong> id of the channel below which this channel is to be sorted. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerVariableAsInt">
<span class="target" id="serverlib_8h_1a0aaea45ab87fe56a0439a88a3c7a5dc0"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a server variable </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server of which to get a variable value </p></li>
<li><p><strong>flag</strong> specifies for which variable to get the value. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the result </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerVariableAsUInt64">
<span class="target" id="serverlib_8h_1a63d1510c4b9af557a09c511d294cee98"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a server variable </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server of which to get a variable value </p></li>
<li><p><strong>flag</strong> specifies for which variable to get the value. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the result. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerVariableAsString">
<span class="target" id="serverlib_8h_1a4dd9eecffe1f351ac891b4caa1256b14"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a server variable </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server of which to get a variable value </p></li>
<li><p><strong>flag</strong> specifies for which variable to get the value. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive a utf8 encoded c string containing the value. Memory is allocated by the server library and must be freed by the caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVirtualServerVariableAsInt">
<span class="target" id="serverlib_8h_1acb5df2346686fd0652c6857720344cbe"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVirtualServerVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set a new value for a server variable </p>
<p>After youre done setting all the variables you need to change, a call to <a class="reference internal" href="#serverlib_8h_1a5e65abfcdaf9a5c9b70c4fe97200935b"><span class="std std-ref">ts3server_flushVirtualServerVariable</span></a> is necessary to publish the changes</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies which server to set the variable on </p></li>
<li><p><strong>flag</strong> specifies which server variable to set. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVirtualServerVariableAsUInt64">
<span class="target" id="serverlib_8h_1a823c1c6edd8229a352c8160473a6c825"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVirtualServerVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set a new value for a server variable </p>
<p>After youre done setting all the variables you need to change, a call to <a class="reference internal" href="#serverlib_8h_1a5e65abfcdaf9a5c9b70c4fe97200935b"><span class="std std-ref">ts3server_flushVirtualServerVariable</span></a> is necessary to publish the changes</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies which server to set the variable on </p></li>
<li><p><strong>flag</strong> specifies which server variable to set. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVirtualServerVariableAsString">
<span class="target" id="serverlib_8h_1a2c8797bdcad635dc9a21dcf4a0d3f9dd"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVirtualServerVariableAsString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.VirtualServerProperties" title="VirtualServerProperties"><span class="n"><span class="pre">VirtualServerProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set a new value for a server variable </p>
<p>After youre done setting all the variables you need to change, a call to <a class="reference internal" href="#serverlib_8h_1a5e65abfcdaf9a5c9b70c4fe97200935b"><span class="std std-ref">ts3server_flushVirtualServerVariable</span></a> is necessary to publish the changes</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies which server to set the variable on </p></li>
<li><p><strong>flag</strong> specifies which server variable to set. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_flushVirtualServerVariable">
<span class="target" id="serverlib_8h_1a5e65abfcdaf9a5c9b70c4fe97200935b"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_flushVirtualServerVariable</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.ts3server_flushVirtualServerVariable" title="Link to this definition"></a><br /></dt>
<dd><p>Publish server changes done through previous calls to <a class="reference internal" href="#serverlib_8h_1acb5df2346686fd0652c6857720344cbe"><span class="std std-ref">ts3server_setVirtualServerVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1a2c8797bdcad635dc9a21dcf4a0d3f9dd"><span class="std std-ref">ts3server_setVirtualServerVariableAsString</span></a>, <a class="reference internal" href="#serverlib_8h_1a823c1c6edd8229a352c8160473a6c825"><span class="std std-ref">ts3server_setVirtualServerVariableAsUInt64</span></a>. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server you previously called setVirtualServerVariableAs functions </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_makeVirtualServerCreationParams">
<span class="target" id="serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_makeVirtualServerCreationParams</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3VirtualServerCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Creates a structure to define an entire virtual server including the channel layout for server creation for use with <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a>. </p>
<p>This is the first function to call when using the <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> meachanism of creating virtual servers in one go, including all of their channels. After receiving the structure using this function, you need to call <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a> to set basic configuration for this virtual server. Once that is done you can set additional parameters using <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> and <a class="reference internal" href="#serverlib_8h_1a08ad40944701d279e0d417f30bebb035"><span class="std std-ref">ts3server_setVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"><span class="std std-ref">ts3server_setVariableAsUInt64</span></a> or <a class="reference internal" href="#serverlib_8h_1a1b584647b5c91c42707494ab631c9213"><span class="std std-ref">ts3server_setVariableAsString</span></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> address of a variable to receive a pointer to a structure defining the virtual server. This must be filled using <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a> after this. Pointer must not be freed by caller. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVirtualServerCreationParams">
<span class="target" id="serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVirtualServerCreationParams</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3VirtualServerCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">virtualServerCreationParams</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">serverPort</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">serverIp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">serverKeyPair</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">serverMaxClients</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">channelCount</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Set mandatory server creation properties for server creation using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a>. </p>
<p>This call is mandatory after calling <a class="reference internal" href="#serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"><span class="std std-ref">ts3server_makeVirtualServerCreationParams</span></a> when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> and sets the basic information to create a virtual server. After this call you can optionally set other variables by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> after this.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>virtualServerCreationParams</strong> pointer to a struct of creation parameters obtained by calling <a class="reference internal" href="#serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"><span class="std std-ref">ts3server_makeVirtualServerCreationParams</span></a></p></li>
<li><p><strong>serverPort</strong> the UDP port to listen for client connections on </p></li>
<li><p><strong>serverIp</strong> comma separated list of IP address(es) to listen for client connections on. IPv4 and IPv6 addresses are supported. </p></li>
<li><p><strong>serverKeyPair</strong> unique key for encryption. Pass an empty string when originally creating a new server, query the generated encryption key with <a class="reference internal" href="#serverlib_8h_1ad40026c9644902e2e02b50ea18166609"><span class="std std-ref">ts3server_getVirtualServerKeyPair</span></a>, store it and use it on subsequent start ups. </p></li>
<li><p><strong>serverMaxClients</strong> maximum number of clients that can be connected simultaneously at any given time </p></li>
<li><p><strong>channelCount</strong> the amount of channels this server will have after creation. You must call <a class="reference internal" href="#serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"><span class="std std-ref">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></a> with this virtualServerCreationParams exactly this many times. </p></li>
<li><p><strong>serverID</strong> the id this virtual server will have when created. server id must be unique during life time of the server library. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerCreationParamsVariables">
<span class="target" id="serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerCreationParamsVariables</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3VirtualServerCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">virtualServerCreationParams</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>create struct to define optional server settings for server creation with <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>virtualServerCreationParams</strong></p></li>
<li><p><strong>result</strong> address of a variable to receive a pointer to a TS3Variables struct, to set optional server settings using <a class="reference internal" href="#serverlib_8h_1a08ad40944701d279e0d417f30bebb035"><span class="std std-ref">ts3server_setVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1a1b584647b5c91c42707494ab631c9213"><span class="std std-ref">ts3server_setVariableAsString</span></a> or <a class="reference internal" href="#serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"><span class="std std-ref">ts3server_setVariableAsUInt64</span></a>. Memory must not be freed by caller. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerCreationParamsChannelCreationParams">
<span class="target" id="serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3VirtualServerCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">virtualServerCreationParams</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">channelIdx</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3ChannelCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Used to specify channels to create during advanced server creation using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a>. </p>
<p>Call this function exactly as often as you indicated channels to be created in the <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a> call. Once you have received the struct you must set the details using <a class="reference internal" href="#serverlib_8h_1aa902981e442f7f3eba09518e70b19268"><span class="std std-ref">ts3server_setChannelCreationParams</span></a> and can optionally set additional parameters using <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a> to get a structure to fill using <a class="reference internal" href="#serverlib_8h_1a08ad40944701d279e0d417f30bebb035"><span class="std std-ref">ts3server_setVariableAsInt</span></a>, <a class="reference internal" href="#serverlib_8h_1a1b584647b5c91c42707494ab631c9213"><span class="std std-ref">ts3server_setVariableAsString</span></a>, <a class="reference internal" href="#serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"><span class="std std-ref">ts3server_setVariableAsUInt64</span></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>virtualServerCreationParams</strong> pointer to the server structure on which to create this channel. Obtained by calling <a class="reference internal" href="#serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"><span class="std std-ref">ts3server_makeVirtualServerCreationParams</span></a></p></li>
<li><p><strong>channelIdx</strong> specifies the channel to specify creation parameters for. Must be &gt; 0 and &lt; the channelCount parameter specified in the <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a> call </p></li>
<li><p><strong>result</strong> address of a variable to receive a pointer that is to be filled using <a class="reference internal" href="#serverlib_8h_1aa902981e442f7f3eba09518e70b19268"><span class="std std-ref">ts3server_setChannelCreationParams</span></a>. Must not be freed by caller. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_createVirtualServer2">
<span class="target" id="serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_createVirtualServer2</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3VirtualServerCreationParams</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">virtualServerCreationParams</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="#c.VirtualServerCreateFlags" title="VirtualServerCreateFlags"><span class="n"><span class="pre">VirtualServerCreateFlags</span></span></a><span class="w"> </span><span class="n"><span class="pre">flags</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Create an entire server structure in a single call. Useful for restoring an entire virtual server including channels including their ids after storing them on shutdown. See the SDK documentation for more in depth information. </p>
<p>This requires a few other calls to be made in advance. First you need to call <a class="reference internal" href="#serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"><span class="std std-ref">ts3server_makeVirtualServerCreationParams</span></a> to get a TS3VirtualServerCreationParams struct that then needs to be filled via <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a>. You can then use <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> to set other server settings and use <a class="reference internal" href="#serverlib_8h_1a43b890922f8f205e9b725e79c104abd2"><span class="std std-ref">ts3server_getVirtualServerCreationParamsChannelCreationParams</span></a> to specify channels to create using <a class="reference internal" href="#serverlib_8h_1aa902981e442f7f3eba09518e70b19268"><span class="std std-ref">ts3server_setChannelCreationParams</span></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>virtualServerCreationParams</strong> pointer to the server parameters obtained by calling <a class="reference internal" href="#serverlib_8h_1a721abc40a3ce104064cce4448c455ca4"><span class="std std-ref">ts3server_makeVirtualServerCreationParams</span></a>. These must have been filled using <a class="reference internal" href="#serverlib_8h_1a61075aae119c7d5f16c7601512bbf48e"><span class="std std-ref">ts3server_setVirtualServerCreationParams</span></a> before calling this function. </p></li>
<li><p><strong>flags</strong> defines how certain information is present in the virtualServerCreationParams. Combination of the values from the <a class="reference internal" href="#serverlib_8h_1a065f4f9ad6e60befd2020b457e0f113e"><span class="std std-ref">VirtualServerCreateFlags</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the created servers id. This is used in other calls to the server library to identify this server. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerConnectionVariableAsUInt64">
<span class="target" id="serverlib_8h_1ab359c12a5248ad88cba1d39a0947071c"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerConnectionVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ConnectionProperties" title="ConnectionProperties"><span class="n"><span class="pre">ConnectionProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get value of server connection properties as unsigned integer. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> which server to get connection properties of </p></li>
<li><p><strong>flag</strong> specifies which property to get the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a050954dff4a89322d463770f688b1f65"><span class="std std-ref">ConnectionProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the connection property </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerConnectionVariableAsDouble">
<span class="target" id="serverlib_8h_1abf4ca5932b51ead9cbca9a3bcd9be9a4"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerConnectionVariableAsDouble</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="properties.html#c.ConnectionProperties" title="ConnectionProperties"><span class="n"><span class="pre">ConnectionProperties</span></span></a><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get value of server connection properties as double </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> which server to get connection properties of </p></li>
<li><p><strong>flag</strong> specifies which value to get. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1a050954dff4a89322d463770f688b1f65"><span class="std std-ref">ConnectionProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the value of the connection property. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerList">
<span class="target" id="serverlib_8h_1a68ffbfbe9a6857a533c35bf7e5b5f11a"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerList</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get a list of virtual servers in this instance </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> address of a variable to receive a zero terminated array of virtual server ids. Like {4, 8, …, 0} Memory is allocated by the server library and caller must free the array using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_stopVirtualServer">
<span class="target" id="serverlib_8h_1ae5571af2bbf7bbca0f6daf746d5202ff"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_stopVirtualServer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>deletes a virtual server. All clients will be disconnected and no more connections are accepted. You need to recreate the server using <a class="reference internal" href="#serverlib_8h_1a5175258df0d2a5ab39b36f35f55cc6c2"><span class="std std-ref">ts3server_createVirtualServer</span></a> or <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> to make it available again. </p>
<p>You may want to save the state of the virtual server if you need persistence.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> specifies which server to stop </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_createVirtualServer">
<span class="target" id="serverlib_8h_1a5175258df0d2a5ab39b36f35f55cc6c2"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_createVirtualServer</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">serverPort</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">serverIp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">serverName</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">serverKeyPair</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">serverMaxClients</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>create a new virtual server. The server is started automatically after being created. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverPort</strong> the UDP port to listen for client connections on </p></li>
<li><p><strong>serverIp</strong> comma separated list of IP address(es) to listen for client connections on. IPv4 and IPv6 addresses are supported. </p></li>
<li><p><strong>serverName</strong> display name of the server. </p></li>
<li><p><strong>serverKeyPair</strong> Key pair for encryption. Must be unique for each virtual server. Pass an empty string when originally creating a new server, query the generated encryption key with <a class="reference internal" href="#serverlib_8h_1ad40026c9644902e2e02b50ea18166609"><span class="std std-ref">ts3server_getVirtualServerKeyPair</span></a>, store it and use it on subsequent start ups. </p></li>
<li><p><strong>serverMaxClients</strong> maximum number of clients that can be connected simultaneously at any given time </p></li>
<li><p><strong>result</strong> address of a variable that will receive the virtual server ID that can be used to specify this server in future calls to server library functions. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVirtualServerKeyPair">
<span class="target" id="serverlib_8h_1ad40026c9644902e2e02b50ea18166609"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVirtualServerKeyPair</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>retrieve the encryption keys used by the virtual server. </p>
<p>Store these and use them on subsequent process startup to recreate this server when calling <a class="reference internal" href="#serverlib_8h_1a5175258df0d2a5ab39b36f35f55cc6c2"><span class="std std-ref">ts3server_createVirtualServer</span></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverID</strong> the server for which to get the key pair. </p></li>
<li><p><strong>result</strong> address of a variable to receive a utf8 encoded c string containing the key pair. Memory is allocated by the server library and must be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_createSecuritySalt">
<span class="target" id="serverlib_8h_1a718c03b28330e46df2de3a96a083e316"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_createSecuritySalt</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">options</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">salt</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">saltByteSize</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">securitySalt</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>Create a security salt to lock channel to identities. See the :ref:SDK Documentation&lt;<code class="docutils literal notranslate"><span class="pre">channel_security_salt</span></code>&gt; on the topic for more in depth explanation. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>options</strong> specifies which parameters to include in the security salt. A combination of values from the <a class="reference internal" href="enumerations.html#public__definitions_8h_1a33449bae9acaa426cceb4a8d52d6eed2"><span class="std std-ref">SecuritySaltOptions</span></a> enum. </p></li>
<li><p><strong>salt</strong> pointer to random data of cryptographic quality. </p></li>
<li><p><strong>saltByteSize</strong> number of bytes of random data to use. Larger is better but slower. </p></li>
<li><p><strong>securitySalt</strong> address of a variable to receive the security salt. Memory is allocated by the server library and needs to be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_calculateSecurityHash">
<span class="target" id="serverlib_8h_1adbfb29182ed85fc4fa4e65a719ebaeb3"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_calculateSecurityHash</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">securitySalt</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientUniqueIdentifier</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientNickName</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">clientMetaData</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">securityHash</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>create a hash for a specific client from a security salt to lock an identity to a channel. See the :ref:SDK Documentation&lt;<code class="docutils literal notranslate"><span class="pre">channel_security_salt</span></code>&gt; on the topic for more in depth explanation. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>securitySalt</strong> the security salt of a channel as generated by <a class="reference internal" href="#serverlib_8h_1a718c03b28330e46df2de3a96a083e316"><span class="std std-ref">ts3server_createSecuritySalt</span></a></p></li>
<li><p><strong>clientUniqueIdentifier</strong> public identity of a client to generate a security hash for </p></li>
<li><p><strong>clientNickName</strong> nickname of the client to include in the hash if specified by the salt. </p></li>
<li><p><strong>clientMetaData</strong> meta data of the client to include in the hash if specified by the salt. </p></li>
<li><p><strong>securityHash</strong> address of a variable to receive the security hash. Memory is allocated by the server library and must be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVariableAsInt">
<span class="target" id="serverlib_8h_1ab4fc697e99cbd4b008715d6962f93daf"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as integer. Some are only available as string or unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the desired value </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVariableAsUInt64">
<span class="target" id="serverlib_8h_1ab35becb45f8ade6b91840d208a4c9274"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as unsigned 64 bit integer. Some are only available as string or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the desired value </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_getVariableAsString">
<span class="target" id="serverlib_8h_1a0ec0dd275014b567668632d0eeda2f55"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_getVariableAsString</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>get the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as string. Some are only available as unsigned 64 bit integer or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>result</strong> address of a variable to receive the desired value. Memory is allocated by the server library and must be freed by caller using <a class="reference internal" href="#serverlib_8h_1a6993000e98ccfa4ecf0a6f3d92406e5e"><span class="std std-ref">ts3server_freeMemory</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVariableAsInt">
<span class="target" id="serverlib_8h_1a08ad40944701d279e0d417f30bebb035"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVariableAsInt</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as integer. Some are only available as string or unsigned 64 bit integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set for the variable. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVariableAsUInt64">
<span class="target" id="serverlib_8h_1ad3245ab7544e8444f76156f35575e84d"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVariableAsUInt64</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as unsigned 64 bit integer. Some are only available as string or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> the new value to set for the variable. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.ts3server_setVariableAsString">
<span class="target" id="serverlib_8h_1a1b584647b5c91c42707494ab631c9213"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ts3server_setVariableAsString</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">TS3Variables</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">var</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">flag</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><br /></dt>
<dd><p>set the value of a property of a server or channel when using <a class="reference internal" href="#serverlib_8h_1a2cbaee21d0dc163d23ebcc4d15065fbe"><span class="std std-ref">ts3server_createVirtualServer2</span></a> or <a class="reference internal" href="#serverlib_8h_1a04c949dd9f95b3d4a56bf843fcf826ba"><span class="std std-ref">ts3server_createChannel</span></a></p>
<p>Not all properties are available as string. Some are only available as unsigned 64 bit integer or integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>var</strong> pointer to a TS3Variables struct obtained by calling <a class="reference internal" href="#serverlib_8h_1a57d50ad9f5b070e63d7c1a02b5c8781e"><span class="std std-ref">ts3server_getVirtualServerCreationParamsVariables</span></a> or <a class="reference internal" href="#serverlib_8h_1a9377f425b1bba45358cd97c579dc9512"><span class="std std-ref">ts3server_getChannelCreationParamsVariables</span></a></p></li>
<li><p><strong>flag</strong> specifies which variable to receive the value of. One of the values from the <a class="reference internal" href="properties.html#public__definitions_8h_1adcce9c82f0123acf4ab8f75ef5be93f9"><span class="std std-ref">VirtualServerProperties</span></a> enum </p></li>
<li><p><strong>value</strong> utf8 encoded c string containing the value to set the variable to </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>An Error code from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum indicating either success or the failure reason </p>
</dd>
</dl>
</dd></dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.ServerLibFunctions">
<span class="target" id="struct_server_lib_functions"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ServerLibFunctions</span></span></span><br /></dt>
<dd><div class="docutils container">
<em>#include &lt;serverlib.h&gt;</em></div>
<p>Server callbacks. Zero initialize and set members to functions that are to be called when the event in question happens. Every callback you use should exit quickly to avoid stalling the server. If you need any expensive activity upon receiving callbacks, consider starting the activity in a new thread and allow the callback to exit quickly. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onVoiceDataEvent">
<span class="target" id="struct_server_lib_functions_1a01fe613a7e84cc45f4c7eeea120c665a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onVoiceDataEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">voiceData</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">voiceDataSize</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">frequency</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onVoiceDataEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when audio data is received from any client. Allows access to audio data from any client. </p>
<p>Can be used to implement server side voice recording. Do not implement if you dont need server side recording. Callback will be called for every client sending audio data, even if nobody can hear said client (e.g. alone in a channel).</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client which is sending audio data </p>
</dd>
<dt class="field-odd">Param voiceData<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to the voice buffer. Must not be invalidated or otherwise tampered with. </p>
</dd>
<dt class="field-even">Param voiceDataSize<span class="colon">:</span></dt>
<dd class="field-even"><p>number of audio frames available in the buffer </p>
</dd>
<dt class="field-odd">Param frequency<span class="colon">:</span></dt>
<dd class="field-odd"><p>audio data sample rate </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientStartTalkingEvent">
<span class="target" id="struct_server_lib_functions_1aa8e85acd51975ab77b1e1631875b3e8f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientStartTalkingEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onClientStartTalkingEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when a client starts talking </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that started talking </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientStopTalkingEvent">
<span class="target" id="struct_server_lib_functions_1a6736adbc7d096bf9b58366031273a358"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientStopTalkingEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onClientStopTalkingEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when a client stops talking </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that stopped talking </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientConnected">
<span class="target" id="struct_server_lib_functions_1a12d5f531222aeffdc7ccccffba243526"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientConnected</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">removeClientError</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onClientConnected" title="Link to this definition"></a><br /></dt>
<dd><p>called when a client connects </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that connected </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that the client connected to </p>
</dd>
<dt class="field-even">Param removeClientError<span class="colon">:</span></dt>
<dd class="field-even"><p>whether to allow the client on the server. Set the value to one of the values from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum if you want to reject the client. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientDisconnected">
<span class="target" id="struct_server_lib_functions_1a64def8c10a92005eb6993e233ae01f63"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientDisconnected</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onClientDisconnected" title="Link to this definition"></a><br /></dt>
<dd><p>called when a client disconnects </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that disconnected. The client is already gone by the time this callback is called. The client id cannot be used to query information. </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that the client was in before disconnecting. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientMoved">
<span class="target" id="struct_server_lib_functions_1a40f4ace201c09970626c23bc7c2feaca"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientMoved</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">oldChannelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newChannelID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onClientMoved" title="Link to this definition"></a><br /></dt>
<dd><p>called when a client changed to a different channel by any means, including switching the channel themselves. </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that switched to a different channel. </p>
</dd>
<dt class="field-odd">Param oldChannelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the previous channel the client was in. </p>
</dd>
<dt class="field-even">Param newChannelID<span class="colon">:</span></dt>
<dd class="field-even"><p>the current channel the client is in now. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onChannelCreated">
<span class="target" id="struct_server_lib_functions_1a73ced8efceba96a7e5b501edee5d4282"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onChannelCreated</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onChannelCreated" title="Link to this definition"></a><br /></dt>
<dd><p>called when a channel has been created </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the id of the client that created the channel. 0 if the server created the channel. </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the id of the newly created channel. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onChannelEdited">
<span class="target" id="struct_server_lib_functions_1ab466d73b99422b578328caa83614c26d"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onChannelEdited</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onChannelEdited" title="Link to this definition"></a><br /></dt>
<dd><p>called when a channel has been edited </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that edited the channel. 0 if the server edited the channel. </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that was edited </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onChannelDeleted">
<span class="target" id="struct_server_lib_functions_1a882c11234f59c715895c4f5454ca87ce"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onChannelDeleted</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onChannelDeleted" title="Link to this definition"></a><br /></dt>
<dd><p>called when a channel was deleted </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>client that deleted the channel. 0 if the server deleted the channel </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the id of the channel that was deleted. The channel is gone already by the time this callback is called and information about the channel is no longer available </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onServerTextMessageEvent">
<span class="target" id="struct_server_lib_functions_1ab098a00d99e14e7f33017d201f0d989e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onServerTextMessageEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">textMessage</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onServerTextMessageEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when a server wide text message was sent </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that is sending the message </p>
</dd>
<dt class="field-odd">Param textMessage<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the text of the message sent </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onChannelTextMessageEvent">
<span class="target" id="struct_server_lib_functions_1a9ccd70738f822784026fcc9eb6274e79"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onChannelTextMessageEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">targetChannelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">textMessage</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onChannelTextMessageEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when a channel text message was sent </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client that is sending the message </p>
</dd>
<dt class="field-odd">Param targetChannelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel in which the message is sent </p>
</dd>
<dt class="field-even">Param textMessage<span class="colon">:</span></dt>
<dd class="field-even"><p>utf8 encoded c string containing the message sent </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onUserLoggingMessageEvent">
<span class="target" id="struct_server_lib_functions_1a9899779b855cfcbe9a90ce3e845f2a26"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onUserLoggingMessageEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">logmessage</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">logLevel</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">logChannel</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">logID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">logTime</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">completeLogString</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onUserLoggingMessageEvent" title="Link to this definition"></a><br /></dt>
<dd><p>when user logging was enabled when calling <a class="reference internal" href="#serverlib_8h_1a4eb2277bdac2e16f0d0fa2620fa73ecd"><span class="std std-ref">ts3server_initServerLib</span></a> this callback is called whenever a message with at least the severity specified through <a class="reference internal" href="#serverlib_8h_1a3e266c0a613fe2bd8a0a7df7a4d32f5e"><span class="std std-ref">ts3server_setLogVerbosity</span></a> is supposed to be logged. Allows to customize logging and handle errors or critical log events. </p>
<dl class="field-list simple">
<dt class="field-odd">Param logmessage<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the message to be logged </p>
</dd>
<dt class="field-even">Param logLevel<span class="colon">:</span></dt>
<dd class="field-even"><p>the severity of the message that the callback is called for. One of the values from the LogLevel enum </p>
</dd>
<dt class="field-odd">Param logChannel<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the arbitrary text used for grouping messages. </p>
</dd>
<dt class="field-even">Param logID<span class="colon">:</span></dt>
<dd class="field-even"><p>the server on which the message was logged </p>
</dd>
<dt class="field-odd">Param logTime<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the time and date in system format the message was logged </p>
</dd>
<dt class="field-even">Param completeLogString<span class="colon">:</span></dt>
<dd class="field-even"><p>utf8 encoded c string containing all the previous parameters in a complete text string ready for logging. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onAccountingErrorEvent">
<span class="target" id="struct_server_lib_functions_1afbbf45dc193197ee27db6f23908391aa"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onAccountingErrorEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">errorCode</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.ServerLibFunctions.onAccountingErrorEvent" title="Link to this definition"></a><br /></dt>
<dd><p>called when an error occurs with license checking. </p>
<p>Allows you to gracefully handle errors like a missing or expired license for example, while keeping the rest of your application running.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the error occured. This server has been shut down automatically, other servers keep running. If this is 0 then all servers are affected by the error and have been shut down. In this case you may want to call <a class="reference internal" href="#serverlib_8h_1a76909dda104ab2447565a527b25d3d6b"><span class="std std-ref">ts3server_destroyServerLib</span></a> to clean up resources. </p>
</dd>
<dt class="field-even">Param errorCode<span class="colon">:</span></dt>
<dd class="field-even"><p>the error that appeared. One of the values from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum. You can use <a class="reference internal" href="#serverlib_8h_1aafaaa905dbf79a68a09579ebefbca42e"><span class="std std-ref">ts3server_getGlobalErrorMessage</span></a> to get a string representation for the error code. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onCustomPacketEncryptEvent">
<span class="target" id="struct_server_lib_functions_1a19a07910089ffbbb4f33d7097756f7b5"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onCustomPacketEncryptEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dataToSend</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sizeOfData</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a packet needs to be encrypted to be sent over the wire. </p>
<p>Used to implement custom encryption of server communication. This needs to be implemented the same in the client and server, otherwise clients cannot communicate with the server. Only implement this callback when you need custom encryption.</p>
<dl class="field-list simple">
<dt class="field-odd">Param dataToSend<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to an array of bytes that need to be encrypted. Must not be freed. Encrypt the data in place in this array if the size of your encrypted data is smaller than indicated in the sizeOfData parameter. Otherwise allocate your own memory and replace the pointer to point to your own allocated memory. In this case you need to take care of freeing the memory. </p>
</dd>
<dt class="field-even">Param sizeOfData<span class="colon">:</span></dt>
<dd class="field-even"><p>size in byte of the dataToSend array. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onCustomPacketDecryptEvent">
<span class="target" id="struct_server_lib_functions_1a744d0576b5e2935ff0189247d97f8ecf"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onCustomPacketDecryptEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dataReceived</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dataReceivedSize</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a packet needs to be decrypted after it has been received. </p>
<p>Used to implement custom encryption of server communication. This needs to be implemented the same in the client and server, otherwise clients cannot communicate with the server. Only implement this callback when you need custom encryption.</p>
<dl class="field-list simple">
<dt class="field-odd">Param dataReceived<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to an array of bytes that need to be decrypted. Must not be freed. Decrypt the data in place in this array if the size of your decrypted data is smaller than indicated by the dataReceivedSize parameter. Otherwise allocate your own memory and replace the pointer to point to your own allocated memory. In this case you need to take care of freeing the memory </p>
</dd>
<dt class="field-even">Param dataReceivedSize<span class="colon">:</span></dt>
<dd class="field-even"><p>size in byte of the dataReceived array. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onFileTransferEvent">
<span class="target" id="struct_server_lib_functions_1a37b321fe970dade30e67c99619c948c5"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onFileTransferEvent</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.FileTransferCallbackExport" title="FileTransferCallbackExport"><span class="n"><span class="pre">FileTransferCallbackExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called whenever a file transfer is done </p>
<dl class="field-list simple">
<dt class="field-odd">Param data<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to a structure describing the file transfer that completed. See <a class="reference internal" href="enumerations.html#struct_file_transfer_callback_export"><span class="std std-ref">FileTransferCallbackExport</span></a> for details. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientCanConnect">
<span class="target" id="struct_server_lib_functions_1ac8eabc6d8af3a6a1fc860c5a3d1b03e7"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientCanConnect</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client is about to connect. Can be used to deny clients from connecting. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the client on the server, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject the client.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server the client wants to connect to </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client trying to connect </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientCanGetChannelDescription">
<span class="target" id="struct_server_lib_functions_1a036d9938fa76cd5836109aa2642997af"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientCanGetChannelDescription</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client requests channel description of a channel using <a class="reference internal" href="client_api.html#clientlib_8h_1a806652361900fb894016df2c14bddc6d"><span class="std std-ref">ts3client_requestChannelDescription</span></a>. Can be used to deny access to channel descriptions. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the request was received </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client requesting the channel description </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientUpdate">
<span class="target" id="struct_server_lib_functions_1a15111818a39414f0bd17f9e70cd3fe63"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientUpdate</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">clientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.VariablesExport" title="VariablesExport"><span class="n"><span class="pre">VariablesExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">variables</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client wants to update a clients variables. Used to deny or allow updating certain client variables </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param clientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client for which the variables are attempted to be changed. </p>
</dd>
<dt class="field-odd">Param variables<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_variables_export"><span class="std std-ref">VariablesExport</span></a> containing the variables, new and old values of the client. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientKickFromChannel">
<span class="target" id="struct_server_lib_functions_1ada6ad1232a58bd93fe50dbaef7108c61"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientKickFromChannel</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">toKickCount</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">toKickClients</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">reasonText</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called before a client is kicked from the channel. Allows you to control whether clients are allowed to kick another client </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client attempting to kick another client. </p>
</dd>
<dt class="field-odd">Param toKickCount<span class="colon">:</span></dt>
<dd class="field-odd"><p>number of clients that are supposed to be kicked </p>
</dd>
<dt class="field-even">Param toKickClients<span class="colon">:</span></dt>
<dd class="field-even"><p>array of <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the clients to be kicked </p>
</dd>
<dt class="field-odd">Param reasonText<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the reason for the kick provided. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientKickFromServer">
<span class="target" id="struct_server_lib_functions_1ab820e129727767aef17b8d6a75355a6c"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientKickFromServer</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">toKickCount</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">toKickClients</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">reasonText</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called before a client is kicked from the server. Allows you to control whether clients are allowed to kick another client </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client attempting to kick another client. </p>
</dd>
<dt class="field-odd">Param toKickCount<span class="colon">:</span></dt>
<dd class="field-odd"><p>number of clients that are supposed to be kicked </p>
</dd>
<dt class="field-even">Param toKickClients<span class="colon">:</span></dt>
<dd class="field-even"><p>array of <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the clients to be kicked </p>
</dd>
<dt class="field-odd">Param reasonText<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the provided reason for the kick. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permClientMove">
<span class="target" id="struct_server_lib_functions_1acd83c1a8a7086ba797256d3e74ca3472"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permClientMove</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">toMoveCount</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">toMoveClients</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newChannel</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">reasonText</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client requests to move one or more other clients. Allows you to control whether a client can move the clients. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the move is attempted. </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>pointer to a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client attempting to move the client(s). </p>
</dd>
<dt class="field-odd">Param toMoveCount<span class="colon">:</span></dt>
<dd class="field-odd"><p>number of clients that are being moved. </p>
</dd>
<dt class="field-even">Param toMoveClients<span class="colon">:</span></dt>
<dd class="field-even"><p>array of <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing which clients are being moved. </p>
</dd>
<dt class="field-odd">Param newChannel<span class="colon">:</span></dt>
<dd class="field-odd"><p>id of the channel the clients are to be moved in to. </p>
</dd>
<dt class="field-even">Param reasonText<span class="colon">:</span></dt>
<dd class="field-even"><p>utf8 encoded c string containing the reason provided for the move. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permChannelMove">
<span class="target" id="struct_server_lib_functions_1a256a31dc88934117842737bbd44122e1"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permChannelMove</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">newParentChannelID</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client attempts to move a channel. Allows you to control whether the client is allowed to move the channel. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client attempting to move the channel. </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel to be moved. </p>
</dd>
<dt class="field-even">Param newParentChannelID<span class="colon">:</span></dt>
<dd class="field-even"><p>the new parent channel of the channel </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permSendTextMessage">
<span class="target" id="struct_server_lib_functions_1afbe39354ae88166c37d1e13d43b126db"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permSendTextMessage</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">targetMode</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">targetClientOrChannel</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">textMessage</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client tries to send a message. Allows you to control whether the client is allowed to send the message. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client attempting to send the message </p>
</dd>
<dt class="field-odd">Param targetMode<span class="colon">:</span></dt>
<dd class="field-odd"><p>describing the type of message attempting to be sent. One of the values from the <a class="reference internal" href="enumerations.html#public__definitions_8h_1a2773a2b8004cd45e398baa89bb2acef8"><span class="std std-ref">TextMessageTargetMode</span></a> enum </p>
</dd>
<dt class="field-even">Param targetClientOrChannel<span class="colon">:</span></dt>
<dd class="field-even"><p>id of the channel or client (depending of the targetMode) that the message is sent to. </p>
</dd>
<dt class="field-odd">Param textMessage<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the message to be sent. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permServerRequestConnectionInfo">
<span class="target" id="struct_server_lib_functions_1aa245717139df1b0edf22e6e05814103e"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permServerRequestConnectionInfo</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when server connection information is requested using <a class="reference internal" href="client_api.html#clientlib_8h_1a20a6cc2a8dba1a0faf5f031a27ad4102"><span class="std std-ref">ts3client_requestServerConnectionInfo</span></a>. Can be used to deny access. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client requesting the action </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permSendConnectionInfo">
<span class="target" id="struct_server_lib_functions_1ad6b028bca8e164d6a996815639192500"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permSendConnectionInfo</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">mayViewIpPort</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">targetClient</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client attempts to request another clients connection variables using <a class="reference internal" href="client_api.html#clientlib_8h_1a70dbf9fbdae6bb1c85da531a57a85273"><span class="std std-ref">ts3client_requestConnectionInfo</span></a></p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client requesting the other clients information </p>
</dd>
<dt class="field-odd">Param mayViewIpPort<span class="colon">:</span></dt>
<dd class="field-odd"><p>pointer to a variable that controls whether the IP and port of the target client may be seen by the client. Set to 1 to allow the requesting client to see the IP and port. Set to 0 to deny IP and port. </p>
</dd>
<dt class="field-even">Param targetClient<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client that the connection information is requested for. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permChannelCreate">
<span class="target" id="struct_server_lib_functions_1a594252d6cac1dc9f93085a93b3fb6f0c"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permChannelCreate</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">parentChannelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.VariablesExport" title="VariablesExport"><span class="n"><span class="pre">VariablesExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">variables</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client attempts to create a channel. Allows you to control whether or not the client may create the desired channel. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the client attempts to create the channel </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client trying to create a channel </p>
</dd>
<dt class="field-odd">Param parentChannelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that is the parent channel of the channel to be created. 0 if the channel to be created will be a root channel. </p>
</dd>
<dt class="field-even">Param variables<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_variables_export"><span class="std std-ref">VariablesExport</span></a> struct that describes the channel to be created. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permChannelEdit">
<span class="target" id="struct_server_lib_functions_1aa5f59fc8fe9cf2001d4412422db07738"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permChannelEdit</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.VariablesExport" title="VariablesExport"><span class="n"><span class="pre">VariablesExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">variables</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a channel is about to be edited by a client. Allows you to prevent channel edits. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client trying to edit the channel </p>
</dd>
<dt class="field-odd">Param parentChannelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that is to be edited. </p>
</dd>
<dt class="field-even">Param variables<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_variables_export"><span class="std std-ref">VariablesExport</span></a> struct that describes the channel after the edit. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permChannelDelete">
<span class="target" id="struct_server_lib_functions_1a17cb7718b30bfb98eb9f2094a6658944"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permChannelDelete</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called before a channel is deleted by a client. Allows you to deny a client deleting channels. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the channel is to be deleted </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client trying to delete the channel </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that is to be deleted </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permChannelSubscribe">
<span class="target" id="struct_server_lib_functions_1a2f27a241caf60084bf0de426e51963b7"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permChannelSubscribe</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client requests to subscribe a channel. Allows you to deny subscribing to a channel. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server on which the client attempts to subscribe to the channel. </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="enumerations.html#struct_client_mini_export"><span class="std std-ref">ClientMiniExport</span></a> describing the client trying to subscribe the channel </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel that is to be subscribed </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferInitUpload">
<span class="target" id="struct_server_lib_functions_1ae80259f7999a018ecceefd30d24a8c66"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferInitUpload</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftinitupload" title="ts3sc_ftinitupload"><span class="n"><span class="pre">ts3sc_ftinitupload</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a file is to be uploaded. Allows you to deny a client from uploading files, files above a certain size, etc. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client that attempts to upload the file. </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the file to be uploaded. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferInitDownload">
<span class="target" id="struct_server_lib_functions_1a3e336d628181b69951a4276a44e379df"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferInitDownload</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftinitdownload" title="ts3sc_ftinitdownload"><span class="n"><span class="pre">ts3sc_ftinitdownload</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a file is to be downloaded. Allows you to deny a client from downloading files, files above a certain size, etc. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client that attempts to download the file </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the file to be downloaded. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferGetFileInfo">
<span class="target" id="struct_server_lib_functions_1ae6aabc60b6120b91caeba2ecd7335b16"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferGetFileInfo</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftgetfileinfo" title="ts3sc_ftgetfileinfo"><span class="n"><span class="pre">ts3sc_ftgetfileinfo</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client requests file information using <a class="reference internal" href="client_api.html#clientlib_8h_1ae8c0b60065102c7010517b09769692af"><span class="std std-ref">ts3client_requestFileInfo</span></a>. Allows to deny clients from getting file information. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client attempting to get information of the file. </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the file that information is requested for. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferGetFileList">
<span class="target" id="struct_server_lib_functions_1aef117edb5b4cd5e49f99b47ccb3c5743"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferGetFileList</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftgetfilelist" title="ts3sc_ftgetfilelist"><span class="n"><span class="pre">ts3sc_ftgetfilelist</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client requests a directory listing using <a class="reference internal" href="client_api.html#clientlib_8h_1a2f4af115935ecae757bdbcb8443de7db"><span class="std std-ref">ts3client_requestFileList</span></a>. Allows to deny listing files and directories in channels / directories. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferDeleteFile">
<span class="target" id="struct_server_lib_functions_1a9b98c5b35c6c3b0b41d1668fc7737652"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferDeleteFile</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftdeletefile" title="ts3sc_ftdeletefile"><span class="n"><span class="pre">ts3sc_ftdeletefile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client attempts to delete one or more files using <a class="reference internal" href="client_api.html#clientlib_8h_1ad51a44944e06592bea370599ba282f44"><span class="std std-ref">ts3client_requestDeleteFile</span></a>. Allows denying clients deleting files. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client attempting to delete the file </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the file to be deleted </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferCreateDirectory">
<span class="target" id="struct_server_lib_functions_1a510c2ea9256dbeb3f8cce2dc7e8c78f6"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferCreateDirectory</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftcreatedir" title="ts3sc_ftcreatedir"><span class="n"><span class="pre">ts3sc_ftcreatedir</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a directory is to be created using <a class="reference internal" href="client_api.html#clientlib_8h_1af5c0dbb932a7f25b11d19602a4f70cf7"><span class="std std-ref">ts3client_requestCreateDirectory</span></a>. Allows to deny creating certain directories. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client attempting to create the directory </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the directory to create. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.permFileTransferRenameFile">
<span class="target" id="struct_server_lib_functions_1a8ffc6cb5a1f411ea0d8c794f26829ac7"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">permFileTransferRenameFile</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ts3sc_ftrenamefile" title="ts3sc_ftrenamefile"><span class="n"><span class="pre">ts3sc_ftrenamefile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a file is to be renamed or moved using <a class="reference internal" href="client_api.html#clientlib_8h_1ab13be97ad87ab9b10c38f75d5ad74c41"><span class="std std-ref">ts3client_requestRenameFile</span></a>. Allows to deny moving files or even renaming files. </p>
<p>Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow the action, or <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to reject it.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client attempting to rename or move the file. </p>
</dd>
<dt class="field-odd">Param params<span class="colon">:</span></dt>
<dd class="field-odd"><p>describes the file to be renamed or moved, and where the file should be moved to if its being moved. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to allow, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bacd0d64c660d7e6009b05bbba5631607d"><span class="std std-ref">ERROR_permissions</span></a> to deny </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onClientPasswordEncrypt">
<span class="target" id="struct_server_lib_functions_1a537de315006ebf94319be9179385abd3"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onClientPasswordEncrypt</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">plaintext</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">encryptedText</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">encryptedTextByteSize</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a server or channel password is set. </p>
<p>Used to hash the password or encrypt it for check with outside sources.</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param plaintext<span class="colon">:</span></dt>
<dd class="field-even"><p>the plaintext password to be encrypted. </p>
</dd>
<dt class="field-odd">Param encryptedText<span class="colon">:</span></dt>
<dd class="field-odd"><p>the encrypted/hashed password. Fill with your encrypted password. Must be an utf8 encoded c string not larger than specified by encryptedTextByteSize </p>
</dd>
<dt class="field-even">Param encryptedTextByteSize<span class="colon">:</span></dt>
<dd class="field-even"><p>the maximum number of bytes you may write to encryptedText </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onTransformFilePath">
<span class="target" id="struct_server_lib_functions_1adeecf1c7f9dac16176503e3627e52b96"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onTransformFilePath</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">anyID</span></span><span class="w"> </span><span class="n"><span class="pre">invokerClientID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.TransformFilePathExport" title="TransformFilePathExport"><span class="n"><span class="pre">TransformFilePathExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">original</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.TransformFilePathExportReturns" title="TransformFilePathExportReturns"><span class="n"><span class="pre">TransformFilePathExportReturns</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>Allows to rewrite the file path and name of the file to be transfered. Called when a transfer starts. </p>
<p>If you dont need to control server side file name and path then dont implement this callback. The parameters are already filled with the default values intended by the client starting the transfer. These can be changed as required. When the callback exits with <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> the transfer is started with the values present in the result struct. <p>See the <a class="reference internal" href="server/filetransfer.html#s-rewrite-path"><span class="std std-ref">SDK documentation</span></a> for further details.</p>
</p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param invokerClientID<span class="colon">:</span></dt>
<dd class="field-even"><p>the client which started the file transfer </p>
</dd>
<dt class="field-odd">Param original<span class="colon">:</span></dt>
<dd class="field-odd"><p>the original file path and name desired by the client </p>
</dd>
<dt class="field-even">Param result<span class="colon">:</span></dt>
<dd class="field-even"><p>the values from this struct will be used by the server when the callback exits. Already filled with a copy of original. Change the values in this struct as needed. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p>a value from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum. Return <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> to start the transfer with the values in the result struct. When returning an error code the file transfer is not started. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onCustomServerPasswordCheck">
<span class="target" id="struct_server_lib_functions_1aa524f3af56500f12cf64fff0a8bd046f"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onCustomServerPasswordCheck</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client connects to the server. Used to verify the server password when using custom password encryption. </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client that connects to the server </p>
</dd>
<dt class="field-odd">Param password<span class="colon">:</span></dt>
<dd class="field-odd"><p>utf8 encoded c string containing the password provided by the client. </p>
</dd>
<dt class="field-even">Return<span class="colon">:</span></dt>
<dd class="field-even"><p>a value from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum. <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> if the password is valid, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bae610d682cebd45a374eb9c70f3ee6d04"><span class="std std-ref">ERROR_server_invalid_password</span></a> if the password is not valid, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba36643fe80c5cd5e60b36174f4d029e4c"><span class="std std-ref">ERROR_parameter_invalid</span></a> if the password is in invalid format. </p>
</dd>
</dl>
</dd></dl>
<dl class="c var">
<dt class="sig sig-object c" id="c.ServerLibFunctions.onCustomChannelPasswordCheck">
<span class="target" id="struct_server_lib_functions_1a0b43bf6ceb83a50674b7ab27ce58a66b"></span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">onCustomChannelPasswordCheck</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">serverID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="enumerations.html#c.ClientMiniExport" title="ClientMiniExport"><span class="n"><span class="pre">ClientMiniExport</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint64</span></span><span class="w"> </span><span class="n"><span class="pre">channelID</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">)</span></span><br /></dt>
<dd><p>called when a client attempts to enter a password protected channel. Used to verify the channel password when using custom password encryption. </p>
<dl class="field-list simple">
<dt class="field-odd">Param serverID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the server for which the callback was called </p>
</dd>
<dt class="field-even">Param client<span class="colon">:</span></dt>
<dd class="field-even"><p>describes the client that enters a channel </p>
</dd>
<dt class="field-odd">Param channelID<span class="colon">:</span></dt>
<dd class="field-odd"><p>the channel the client attempts to join </p>
</dd>
<dt class="field-even">Param password<span class="colon">:</span></dt>
<dd class="field-even"><p>utf8 encoded c string containing the password provided by the client. </p>
</dd>
<dt class="field-odd">Return<span class="colon">:</span></dt>
<dd class="field-odd"><p>a value from the <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7b"><span class="std std-ref">Ts3ErrorType</span></a> enum. <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba21e7fdf5a31623bfa8042865df880a9d"><span class="std std-ref">ERROR_ok</span></a> if the password is valid, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7bae610d682cebd45a374eb9c70f3ee6d04"><span class="std std-ref">ERROR_server_invalid_password</span></a> if the password is not valid, <a class="reference internal" href="errors.html#public__errors_8h_1a0bcf1e0a5e32989890f6e85064327f7ba36643fe80c5cd5e60b36174f4d029e4c"><span class="std std-ref">ERROR_parameter_invalid</span></a> if the password is in invalid format. </p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="client_api.html" class="btn btn-neutral float-left" title="TeamSpeak Client Functions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="server/intro.html" class="btn btn-neutral float-right" title="Introduction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2020, TeamSpeak Systems GmbH.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>