首次推送
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
#ifndef TEAMLOG_LOGTYPES_H
|
||||
#define TEAMLOG_LOGTYPES_H
|
||||
|
||||
enum LogTypes {
|
||||
LogType_NONE = 0x0000, ///< Logging is disabled
|
||||
LogType_FILE = 0x0001, ///< Log to regular log file
|
||||
LogType_CONSOLE = 0x0002, ///< Log to standard output / error
|
||||
LogType_USERLOGGING = 0x0004, ///< User defined logging. Will call the \ref ServerLibFunctions.onUserLoggingMessageEvent callback for every message to be logged
|
||||
LogType_NO_NETLOGGING = 0x0008, ///< Not used
|
||||
LogType_DATABASE = 0x0010, ///< Log to database (deprecated, server only, no effect in SDK)
|
||||
LogType_SYSLOG = 0x0020, ///< Log to syslog (only available on Linux)
|
||||
};
|
||||
|
||||
enum LogLevel {
|
||||
LogLevel_CRITICAL = 0, ///< these messages stop the program
|
||||
LogLevel_ERROR, ///< everything that is really bad, but not so bad we need to shut down
|
||||
LogLevel_WARNING, ///< everything that *might* be bad
|
||||
LogLevel_DEBUG, ///< output that might help find a problem
|
||||
LogLevel_INFO, ///< informational output, like "starting database version x.y.z"
|
||||
LogLevel_DEVEL ///< developer only output (will not be displayed in release mode)
|
||||
};
|
||||
|
||||
#endif //TEAMLOG_LOGTYPES_H
|
||||
File diff suppressed because it is too large
Load Diff
+58
@@ -0,0 +1,58 @@
|
||||
#ifndef CLIENTLIB_SDK_H
|
||||
#define CLIENTLIB_SDK_H
|
||||
|
||||
// system
|
||||
#include <stdlib.h>
|
||||
|
||||
// own
|
||||
#include "teamspeak/public_definitions.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Sets the client to which to transmit voice. Stops standard channel voice transmission.
|
||||
*
|
||||
* The client will still receive voice from their current channel, however their voice will not be transmitted to their
|
||||
* current channel anymore. If this call is successful (check onServerErrorEvent) then voice of the specified client
|
||||
* will be transmitted to all specified channels and all the specified clients. Pass 0 to both target parameter arrays
|
||||
* to restore default behavior of transmitting voice to current channel. You will receive an onServerErrorEvent with the
|
||||
* passed returnCode indicating whether or not the operation was successful.
|
||||
*
|
||||
* @param server_connection_handler_id the connection handler on which to set the whisper list
|
||||
* @param client_id the client to set the whisper list for. Set to 0 or your own client ID to set your own whisper list.
|
||||
* @param channel_ids an array of channel ids to transmit voice to.
|
||||
* @param channel_ids_size number of elements in aforementioned array.
|
||||
* @param client_ids a zero terminated array of client ids to transmit voice to.
|
||||
* @param client_ids_size number of elements in aforementioned array.
|
||||
* @param impersonate if the target client is a webrtc client, the voice packets will look like as if they have been
|
||||
* send by the invoking client id
|
||||
* @param return_code a c string to identify this request in callbacks. Pass an empty string if unused.
|
||||
* @return An error code from the @ref Ts3ErrorType enum indicating either success or the failure reason
|
||||
*/
|
||||
EXPORTDLL unsigned int ts_client_request_client_set_whisper_list(uint64 server_connection_handler_id, anyID client_id,
|
||||
const uint64* channel_ids,
|
||||
int channel_ids_size,
|
||||
const anyID* client_ids,
|
||||
int client_ids_size, int impersonate,
|
||||
const char* return_code);
|
||||
|
||||
/**
|
||||
* @brief Send a binary-serialized ClientCommandRequest protobuf to the client library.
|
||||
*
|
||||
* The response will be delivered asynchronously via the onProtoResponse callback
|
||||
* as a serialized ClientCommandResponse protobuf.
|
||||
*
|
||||
* @param data Pointer to serialized ClientCommandRequest protobuf bytes
|
||||
* @param size Size of the serialized data in bytes
|
||||
* @param return_code Caller-provided string to correlate the response in onProtoResponse. May be NULL.
|
||||
* @return An error code: ERROR_ok on successful dispatch, ERROR_parameter_invalid on parse failure
|
||||
*/
|
||||
EXPORTDLL unsigned int ts3client_postProtoCommand(const void* data, size_t size, const char* return_code);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CLIENTLIB_SDK_H
|
||||
+635
@@ -0,0 +1,635 @@
|
||||
#ifndef PUBLIC_DEFINITIONS_H
|
||||
#define PUBLIC_DEFINITIONS_H
|
||||
|
||||
#include "teamlog/logtypes.h"
|
||||
|
||||
#define TS3_MAX_SIZE_CHANNEL_NAME 40 // channel name maximum length in characters
|
||||
#define TS3_MAX_SIZE_VIRTUALSERVER_NAME 64 // virtual server name maximum length in characters
|
||||
#define TS3_MAX_SIZE_CLIENT_NICKNAME 64 // client display name length limit in characters
|
||||
#define TS3_MIN_SIZE_CLIENT_NICKNAME 3 // client display name minimum length in characters
|
||||
#define TS3_MAX_SIZE_REASON_MESSAGE 80 // length limit in characters for kick, move, etc reasons
|
||||
|
||||
#define TS3_MAX_SIZE_TEXTMESSAGE 8192 // text message length limit, measured in bytes (utf8 encoded)
|
||||
#define TS3_MAX_SIZE_CHANNEL_TOPIC 255 // channel topic lengt limith, measured in bytes (utf8 encoded)
|
||||
#define TS3_MAX_SIZE_CHANNEL_DESCRIPTION 8192 // channel description length limit, measured in bytes (utf8 encoded)
|
||||
// server welcome message length limit measured in bytes (utf8 encoded)
|
||||
#define TS3_MAX_SIZE_VIRTUALSERVER_WELCOMEMESSAGE 1024
|
||||
#define TS3_SIZE_MYTSID 44
|
||||
// minimum amount of seconds before a clientID that was in use can be assigned to a new client
|
||||
#define TS3_MIN_SECONDS_CLIENTID_REUSE 300
|
||||
|
||||
|
||||
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32)
|
||||
typedef unsigned __int16 anyID;
|
||||
typedef unsigned __int64 uint64;
|
||||
#ifndef EXPORTDLL
|
||||
#ifdef BUILDING_DLL
|
||||
#define EXPORTDLL __declspec(dllexport)
|
||||
#else
|
||||
#define EXPORTDLL
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#include <stdint.h>
|
||||
typedef uint16_t anyID;
|
||||
typedef uint64_t uint64;
|
||||
#ifndef EXPORTDLL
|
||||
#ifdef BUILDING_DLL
|
||||
#define EXPORTDLL __attribute__((visibility("default")))
|
||||
#else
|
||||
#define EXPORTDLL
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
enum Visibility
|
||||
{
|
||||
ENTER_VISIBILITY = 0, ///< Client joined from an unsubscribed channel, or joined the server.
|
||||
RETAIN_VISIBILITY, ///< Client switched from one subscribed channel to a different subscribed channel.
|
||||
LEAVE_VISIBILITY ///< Client switches to an unsubscribed channel, or disconnected from server.
|
||||
};
|
||||
|
||||
enum ConnectStatus
|
||||
{
|
||||
STATUS_DISCONNECTED = 0, ///< There is no activity to the server, this is the default value
|
||||
STATUS_CONNECTING, ///< We are trying to connect, we haven't got a client id yet, we haven't been accepted by the server
|
||||
STATUS_CONNECTED, ///< The server has accepted us, we can talk and hear and we have a client id, but we don't
|
||||
///< have the channels and clients yet, we can get server infos (welcome msg etc.)
|
||||
STATUS_CONNECTION_ESTABLISHING, ///< we are connected and we are visible
|
||||
STATUS_CONNECTION_ESTABLISHED, ///< we are connected and we have the client and channels available
|
||||
};
|
||||
|
||||
enum LocalTestMode
|
||||
{
|
||||
TEST_MODE_OFF = 0,
|
||||
TEST_MODE_VOICE_LOCAL_ONLY,
|
||||
TEST_MODE_VOICE_LOCAL_AND_REMOTE,
|
||||
TEST_MODE_TALK_STATUS_CHANGES_ONLY
|
||||
};
|
||||
|
||||
enum TalkStatus
|
||||
{
|
||||
STATUS_NOT_TALKING = 0, ///< client is not talking
|
||||
STATUS_TALKING = 1, ///< client is talking
|
||||
STATUS_TALKING_WHILE_DISABLED = 2, ///< client is talking while the microphone is muted (only valid for own client)
|
||||
};
|
||||
|
||||
enum CodecType
|
||||
{
|
||||
CODEC_SPEEX_NARROWBAND = 0, ///< (deprecated) mono, 16bit, 8kHz, bitrate dependent on the quality setting
|
||||
CODEC_SPEEX_WIDEBAND, ///< (deprecated) mono, 16bit, 16kHz, bitrate dependent on the quality setting
|
||||
CODEC_SPEEX_ULTRAWIDEBAND, ///< (deprecated) mono, 16bit, 32kHz, bitrate dependent on the quality setting
|
||||
CODEC_CELT_MONO, ///< (deprecated) mono, 16bit, 48kHz, bitrate dependent on the quality setting
|
||||
CODEC_OPUS_VOICE, ///< mono, 16bit, 48khz, bitrate dependent on the quality setting, optimized for voice
|
||||
CODEC_OPUS_MUSIC, ///< stereo, 16bit, 48khz, bitrate dependent on the quality setting, optimized for music
|
||||
};
|
||||
|
||||
enum CodecEncryptionMode
|
||||
{
|
||||
CODEC_ENCRYPTION_PER_CHANNEL = 0, ///< voice data encryption decided per channel
|
||||
CODEC_ENCRYPTION_FORCED_OFF, ///< voice data encryption disabled
|
||||
CODEC_ENCRYPTION_FORCED_ON, ///< voice data encryption enabled
|
||||
};
|
||||
|
||||
enum TextMessageTargetMode
|
||||
{
|
||||
TextMessageTarget_CLIENT = 1, ///< Message is a private message to another client
|
||||
TextMessageTarget_CHANNEL, ///< Message is sent to a channel, received by all clients in that channel at the time
|
||||
TextMessageTarget_SERVER, ///< Message is sent to every client on the server
|
||||
TextMessageTarget_MAX
|
||||
};
|
||||
|
||||
enum MuteInputStatus
|
||||
{
|
||||
MUTEINPUT_NONE = 0, ///< Microphone is not muted, audio is sent to the server
|
||||
MUTEINPUT_MUTED, ///< Microphone is muted, no audio is transmitted to the server
|
||||
};
|
||||
|
||||
enum MuteOutputStatus
|
||||
{
|
||||
MUTEOUTPUT_NONE = 0, ///< Speaker is active, server is sending us audio
|
||||
MUTEOUTPUT_MUTED, ///< Speaker is muted, server is not sending audio to us
|
||||
};
|
||||
|
||||
enum HardwareInputStatus
|
||||
{
|
||||
HARDWAREINPUT_DISABLED = 0, ///< no capture device opened
|
||||
HARDWAREINPUT_ENABLED, ///< capture device open
|
||||
};
|
||||
|
||||
enum HardwareOutputStatus
|
||||
{
|
||||
HARDWAREOUTPUT_DISABLED = 0, ///< no playback device opened
|
||||
HARDWAREOUTPUT_ENABLED, ///< playback device open
|
||||
};
|
||||
|
||||
enum InputDeactivationStatus
|
||||
{
|
||||
INPUT_ACTIVE = 0, ///< Audio is captured from the capture device.
|
||||
INPUT_DEACTIVATED = 1, ///< No audio is captured from the capture device.
|
||||
};
|
||||
|
||||
enum ReasonIdentifier
|
||||
{
|
||||
REASON_NONE = 0, ///< no reason data
|
||||
REASON_MOVED = 1, ///< client was moved
|
||||
REASON_SUBSCRIPTION = 2, // no reason data
|
||||
REASON_LOST_CONNECTION = 3, // reasonmsg=reason
|
||||
REASON_KICK_CHANNEL = 4, //{SectionInvoker} reasonmsg=reason //{SectionInvoker} is only added server->client
|
||||
REASON_KICK_SERVER = 5, //{SectionInvoker} reasonmsg=reason //{SectionInvoker} is only added server->client
|
||||
REASON_KICK_SERVER_BAN = 6, //{SectionInvoker} reasonmsg=reason bantime=time //{SectionInvoker} is only added server->client
|
||||
REASON_SERVERSTOP = 7, // reasonmsg=reason
|
||||
REASON_CLIENTDISCONNECT = 8, // reasonmsg=reason
|
||||
REASON_CHANNELUPDATE = 9, // no reason data
|
||||
REASON_CHANNELEDIT = 10, //{SectionInvoker}
|
||||
REASON_CLIENTDISCONNECT_SERVER_SHUTDOWN = 11, // reasonmsg=reason
|
||||
};
|
||||
|
||||
enum Protocol_Encryption_Cipher
|
||||
{
|
||||
AES_128 = 0b00000000,
|
||||
AES_256 = 0b00000001,
|
||||
|
||||
PROTOCOL_ENCRYPTION_CIPHER_END_MARKER,
|
||||
|
||||
RESERVED = 0b00010000, // reserved until puzzle v2 is fully released, then can be reused
|
||||
PUZZLE_2 = 0b00100000,
|
||||
};
|
||||
|
||||
enum ChannelProperties
|
||||
{
|
||||
CHANNEL_NAME = 0, ///< String. Read/Write. Name of the channel. Always available.
|
||||
CHANNEL_TOPIC, ///< String. Read/Write. Short single line text describing what the channel is about. Always available.
|
||||
CHANNEL_DESCRIPTION, ///< String. Read/Write. Arbitrary text (up to 8k bytes) with information about the channel.
|
||||
///< Must be requested (\ref ts3client_requestChannelDescription)
|
||||
CHANNEL_PASSWORD, ///< String. Read/Write. Password of the channel. Read access is limited to the server. Clients
|
||||
///< will only ever see the last password they attempted to use when joining the channel. Always available.
|
||||
CHANNEL_CODEC, ///< Integer. Read/Write. The codec this channel is using. One of the values from the \ref CodecType
|
||||
///< enum. Always available.
|
||||
CHANNEL_CODEC_QUALITY, ///< Integer. Read/Write. The quality setting of the channel. Valid values are 0 to 10 inclusive.
|
||||
///< Higher value means better voice quality but also more bandwidth usage. Always available.
|
||||
CHANNEL_MAXCLIENTS, ///< Integer. Read/Write. The number of clients that can be in the channel simultaneously.
|
||||
///< Always available.
|
||||
CHANNEL_MAXFAMILYCLIENTS, ///< Integer. Read/Write. The total number of clients that can be in this channel and all
|
||||
///< sub channels of this channel. Always available.
|
||||
CHANNEL_ORDER, ///< UInt64. Read/Write. The ID of the channel below which this channel should be displayed. If 0
|
||||
///< the channel is sorted at the top of the current level. Always available.
|
||||
CHANNEL_FLAG_PERMANENT, ///< Integer. Read/Write. Boolean (1/0) indicating whether the channel remains when empty.
|
||||
///< Permanent channels are stored to the database and available after server restart. SDK
|
||||
///< users will need to take care of restoring channel at server start on their own.
|
||||
///< Mutually exclusive with \ref CHANNEL_FLAG_SEMI_PERMANENT. Always available.
|
||||
CHANNEL_FLAG_SEMI_PERMANENT, ///< Integer. Read/Write. Boolean (1/0) indicating whether the channel remains when
|
||||
///< empty. Semi permanent channels are not stored to disk and gone after server
|
||||
///< restart but remain while empty. Mutually exclusive with \ref
|
||||
///< CHANNEL_FLAG_PERMANENT. Always available.
|
||||
CHANNEL_FLAG_DEFAULT, ///< Integer. Read/Write. Boolean (1/0). The default channel is the channel that all clients
|
||||
///< are located in when they join the server, unless the client explicitly specified a
|
||||
///< different channel when connecting and is allowed to join their preferred channel. Only
|
||||
///< one channel on the server can have this flag set. The default channel must have \ref
|
||||
///< CHANNEL_FLAG_PERMANENT set. Always available.
|
||||
CHANNEL_FLAG_PASSWORD, ///< Integer. Read/Write. Boolean (1/0) indicating whether this channel is password protected.
|
||||
///< When removing or setting \ref CHANNEL_PASSWORD you also need to adjust this flag.
|
||||
CHANNEL_CODEC_LATENCY_FACTOR, ///< (deprecated) Integer. Read/Write. Allows to increase packet size, reducing
|
||||
///< bandwith at the cost of higher latency of voice transmission. Valid values are
|
||||
///< 1-10 inclusive. 1 is the default and offers the lowest latency. Always available.
|
||||
CHANNEL_CODEC_IS_UNENCRYPTED, ///< Integer. Read/Write. Boolean (1/0). If 0 voice data is encrypted, if 1 the voice
|
||||
///< data is not encrypted. Only used if the server \ref
|
||||
///< VIRTUALSERVER_CODEC_ENCRYPTION_MODE is set to \ref CODEC_ENCRYPTION_PER_CHANNEL.
|
||||
///< Always available.
|
||||
CHANNEL_SECURITY_SALT, ///< String. Read/Write. SDK Only, not used by TeamSpeak. This channels security hash. When
|
||||
///< a client joins their \ref CLIENT_SECURITY_HASH is compared to this value, to allow or
|
||||
///< deny the client access to the channel. Used to enforce clients joining the server with
|
||||
///< specific identity and \ref CLIENT_META_DATA. See SDK Documentation about this feature
|
||||
///< for further details. Always available.
|
||||
CHANNEL_DELETE_DELAY, ///< UInt64. Read/Write. Number of seconds deletion of temporary channels is delayed after
|
||||
///< the last client leaves the channel. Channel is only deleted if empty when the delete
|
||||
///< delay expired. Always available.
|
||||
CHANNEL_UNIQUE_IDENTIFIER, ///< String. Read only. An identifier that uniquely identifies a channel. Available in
|
||||
///< Server >= 3.10.0
|
||||
CHANNEL_ENDMARKER,
|
||||
};
|
||||
|
||||
enum ClientProperties
|
||||
{
|
||||
CLIENT_UNIQUE_IDENTIFIER = 0, ///< String. Read only. Public Identity, can be used to identify a client
|
||||
///< installation. Remains identical as long as the client keeps using the same
|
||||
///< identity. Available for visible clients.
|
||||
CLIENT_NICKNAME, ///< String. Read/Write. Display name of the client. Available for visible clients.
|
||||
CLIENT_VERSION, ///< String. Read only. Version String of the client used. For clients other than ourself this
|
||||
///< needs to be requested (\ref ts3client_requestClientVariables).
|
||||
CLIENT_PLATFORM, ///< String. Read only. Operating system used by the client. For other clients other than ourself
|
||||
///< this needs to be requested (\ref ts3client_requestClientVariables).
|
||||
CLIENT_FLAG_TALKING, ///< Integer. Read only. Whether the client is talking. Available on clients that are either
|
||||
///< whispering to us, or in our channel.
|
||||
CLIENT_INPUT_MUTED, ///< Integer. Read/Write. Microphone mute status. Available for visible clients. One of the
|
||||
///< values from the \ref MuteInputStatus enum.
|
||||
CLIENT_OUTPUT_MUTED, ///< Integer. Read/Write. Speaker mute status. Speaker mute implies microphone mute. Available
|
||||
///< for visible clients. One of the values from the \ref MuteOutputStatus enum.
|
||||
CLIENT_OUTPUTONLY_MUTED, ///< Integer. Read/Write. Speaker mute status. Microphone may be active. Available for
|
||||
///< visible clients. One of the values from the \ref MuteOutputStatus enum.
|
||||
CLIENT_INPUT_HARDWARE, ///< Integer. Read only. Indicates whether a capture device is open. Available for visible
|
||||
///< clients. One of the values from the \ref HardwareInputStatus enum.
|
||||
CLIENT_OUTPUT_HARDWARE, ///< Integer. Read only. Indicates whether a playback device is open. Available for visible
|
||||
///< clients. One of the values from the \ref HardwareOutputStatus enum.
|
||||
CLIENT_INPUT_DEACTIVATED, ///< Integer. Read/Write. Not available server side. Local microphone mute status.
|
||||
///< Available only for own client. Used to implement Push To Talk. One of the values from
|
||||
///< the \ref InputDeactivationStatus enum.
|
||||
CLIENT_IDLE_TIME, ///< UInt64. Read only. Seconds since last activity. Available only for own client.
|
||||
CLIENT_DEFAULT_CHANNEL, ///< String. Read only. User specified channel they joined when connecting to the server.
|
||||
///< Available only for own client.
|
||||
CLIENT_DEFAULT_CHANNEL_PASSWORD, ///< String. Read only. User specified channel password for the channel they
|
||||
///< attempted to join when connecting to the server. Available only for own
|
||||
///< client.
|
||||
CLIENT_SERVER_PASSWORD, ///< String. Read only. User specified server password. Available only for own client.
|
||||
CLIENT_META_DATA, ///< String. Read/Write. Can be used to store up to 4096 bytes of information on clients. Not
|
||||
///< used by TeamSpeak. Available for visible clients.
|
||||
CLIENT_IS_MUTED, ///< Integer. Read only. Not available server side. Indicates whether we have muted the client
|
||||
///< using \ref ts3client_requestMuteClients. Available for visible clients other than ourselves.
|
||||
CLIENT_IS_RECORDING, ///< Integer. Read only. Indicates whether the client is recording incoming audio. Available
|
||||
///< for visible clients.
|
||||
CLIENT_VOLUME_MODIFICATOR, ///< Integer. Read only. Volume adjustment for this client as set by \ref
|
||||
///< ts3client_setClientVolumeModifier. Available for visible clients.
|
||||
CLIENT_VERSION_SIGN, ///< String. Read only. TeamSpeak internal signature.
|
||||
CLIENT_SECURITY_HASH, ///< String. Read/Write. This clients security hash. Not used by TeamSpeak, SDK only. Hash is
|
||||
///< provided by an outside source. A channel will use the security salt + other client data
|
||||
///< to calculate a hash, which must be the same as the one provided here. See SDK
|
||||
///< documentation about Client / Channel Security Hashes for more details.
|
||||
CLIENT_ENCRYPTION_CIPHERS, ///< String. Read only. SDK only. List of available ciphers this client can use.
|
||||
CLIENT_IS_STREAMING, ///< bool. Read only, Is currently streaming.
|
||||
CLIENT_ENDMARKER,
|
||||
};
|
||||
|
||||
enum VirtualServerProperties
|
||||
{
|
||||
VIRTUALSERVER_UNIQUE_IDENTIFIER = 0, ///< String. Read only. Unique identifier for a virtual server, does not
|
||||
///< change on server restart. Available if \ref ts3client_getConnectionStatus
|
||||
///< is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_NAME, ///< String. Read/Write. The virtual server display name. Available if \ref
|
||||
///< ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_WELCOMEMESSAGE, ///< String. Read/Write. The welcome message displayed to clients on connect.
|
||||
///< Available if \ref ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED. Not
|
||||
///< updated automatically when changed, updates need to be requested (\ref
|
||||
///< ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_PLATFORM, ///< String. Read only. The operating system the server is running on. Available if \ref
|
||||
///< ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_VERSION, ///< String. Read only. The server software version string. Available if \ref
|
||||
///< ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_MAXCLIENTS, ///< UInt64. Read/Write. The maximum number of clients that can be connected
|
||||
///< simultaneously. Only available on request (\ref ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_PASSWORD, ///< String. Read/Write. The server password. Read access is limited to the server. Clients
|
||||
///< will only get the password they supplied when connecting. Available if \ref
|
||||
///< ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_CLIENTS_ONLINE, ///< UInt64. Read only. The current number of clients connected to the server,
|
||||
///< including query connections. Only available on request (\ref
|
||||
///< ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_CHANNELS_ONLINE, ///< UInt64. Read only. The current number of channels on the server. Only
|
||||
///< available on request (\ref ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_CREATED, ///< Integer. Read only. The time this virtual server was created as unix timestamp.
|
||||
///< Available if \ref ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_UPTIME, ///< UInt64. Read only. Number of seconds that have passed since the virtual server was
|
||||
///< started. Only available on request (\ref ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_CODEC_ENCRYPTION_MODE, ///< Integer. Read/Write. Boolean (1/0) that specifies if voice data is encrypted
|
||||
///< during transfer. One of the values from the \ref CodecEncryptionMode enum.
|
||||
///< Available if \ref ts3client_getConnectionStatus is >= \ref STATUS_CONNECTED.
|
||||
VIRTUALSERVER_ENCRYPTION_CIPHERS, ///< String. Read/Write. Comma separated list of available ciphers to encrypt the
|
||||
///< connection. The server will use the first cipher in the list that is also
|
||||
///< listed in the \ref CLIENT_ENCRYPTION_CIPHERS of the connecting client.
|
||||
///< Clients will fail to connect if no match is found. Always available.
|
||||
VIRTUALSERVER_ADDRESS, ///< Any resolvable address for the specific virtual server
|
||||
VIRTUALSERVER_VERSION_SIGN, ///< String. Read only. Signature of Platform and Version.
|
||||
VIRTUALSERVER_ENDMARKER,
|
||||
VIRTUALSERVER_FILEBASE = 24, ///< String. Read only. The path to the base directory used to store files
|
||||
///< transferred using file transfer. Available only on the server. Is set by \ref
|
||||
///< ts3server_enableFileManager
|
||||
VIRTUALSERVER_MAX_DOWNLOAD_TOTAL_BANDWIDTH = 29, ///< UInt64. Read/Write. Maximum traffic in bytes the server can
|
||||
///< use for file transfer downloads. Only available on request
|
||||
///< (\ref ts3client_requestServerVariables).
|
||||
VIRTUALSERVER_MAX_UPLOAD_TOTAL_BANDWIDTH = 30, ///< UInt64. Read/Write. Maximum traffic in bytes the server can use
|
||||
///< for file transfer uploads. Only available on request (=>
|
||||
///< requestServerVariables)
|
||||
VIRTUALSERVER_LOG_FILETRANSFER = 64 ///< Integer. Read/Write. Boolean (1/0) indicating whether to include file
|
||||
///< transfer activities (uploading or downloading of files) in the server log.
|
||||
///< Always available.
|
||||
};
|
||||
|
||||
/**
|
||||
* Various connection properties.
|
||||
* These are all read only, and except for your own client must be requested using \ref ts3client_requestConnectionInfo
|
||||
*/
|
||||
enum ConnectionProperties
|
||||
{
|
||||
CONNECTION_PING = 0, ///< UInt64. Round trip latency for the connection based on the last 5 seconds. On the server
|
||||
///< this is the average across all connected clients for the last 5 seconds.
|
||||
CONNECTION_PING_DEVIATION, ///< Double. Standard deviation for the round trip latency in \ref CONNECTION_PING
|
||||
CONNECTION_CONNECTED_TIME, ///< UInt64. Seconds the client has been connected.
|
||||
CONNECTION_IDLE_TIME, ///< UInt64. Time in seconds since the last activity (voice transmission, switching channels,
|
||||
///< changing mic / speaker mute status) of the client.
|
||||
CONNECTION_CLIENT_IP, ///< String. IP of this client (as seen from the server side)
|
||||
CONNECTION_CLIENT_PORT, ///< UInt64. Client side port of this client (as seen from the server side)
|
||||
CONNECTION_SERVER_IP, ///< String. The IP or hostname used to connect to the server. Only available on yourself.
|
||||
CONNECTION_SERVER_PORT, ///< UInt64. The server port connected to. Only available on yourself.
|
||||
CONNECTION_PACKETS_SENT_SPEECH, ///< UInt64. The number of voice packets transmitted by the client.
|
||||
CONNECTION_PACKETS_SENT_KEEPALIVE, ///< UInt64. The number of keep alive packets transmitted by the client.
|
||||
CONNECTION_PACKETS_SENT_CONTROL, ///< UInt64. The number of command & control packets transmitted by the client.
|
||||
CONNECTION_PACKETS_SENT_TOTAL, ///< UInt64. Total number of packets transmitted by the client. Equal to the sum of
|
||||
///< \ref CONNECTION_PACKETS_SENT_SPEECH, \ref CONNECTION_PACKETS_SENT_KEEPALIVE and
|
||||
///< \ref CONNECTION_PACKETS_SENT_CONTROL
|
||||
CONNECTION_BYTES_SENT_SPEECH, ///< UInt64. Outgoing traffic used for voice data by the client.
|
||||
CONNECTION_BYTES_SENT_KEEPALIVE, ///< UInt64. Outgoing traffic used for keeping the connection alive by the client.
|
||||
CONNECTION_BYTES_SENT_CONTROL, ///< UInt64. Outgoing traffic used for command & control data by the client.
|
||||
CONNECTION_BYTES_SENT_TOTAL, ///< UInt64. Total outgoing traffic to the server by this client. Equal to the sum of
|
||||
///< \ref CONNECTION_BYTES_SENT_SPEECH, \ref CONNECTION_BYTES_SENT_KEEPALIVE and \ref
|
||||
///< CONNECTION_BYTES_SENT_CONTROL
|
||||
CONNECTION_PACKETS_RECEIVED_SPEECH, ///< UInt64. Number of voice packets received by the client.
|
||||
CONNECTION_PACKETS_RECEIVED_KEEPALIVE, ///< UInt64. Number of keep alive packets received by the client.
|
||||
CONNECTION_PACKETS_RECEIVED_CONTROL, ///< UInt64. Number of command & control packets received by the client.
|
||||
CONNECTION_PACKETS_RECEIVED_TOTAL, ///< UInt64. Total number of packets received by the client. Equal to the sum of
|
||||
///< \ref CONNECTION_PACKETS_RECEIVED_SPEECH, \ref
|
||||
///< CONNECTION_PACKETS_RECEIVED_KEEPALIVE and \ref
|
||||
///< CONNECTION_PACKETS_RECEIVED_CONTROL
|
||||
CONNECTION_BYTES_RECEIVED_SPEECH, ///< UInt64. Incoming traffic used by the client for voice data.
|
||||
CONNECTION_BYTES_RECEIVED_KEEPALIVE, ///< UInt64. Incoming traffic used by the client to keep the connection alive.
|
||||
CONNECTION_BYTES_RECEIVED_CONTROL, ///< UInt64. Incoming traffic used by the client for command & control data.
|
||||
CONNECTION_BYTES_RECEIVED_TOTAL, ///< UInt64. Total incoming traffic used by the client. Equal to the sum of \ref
|
||||
///< CONNECTION_BYTES_RECEIVED_SPEECH, \ref CONNECTION_BYTES_RECEIVED_KEEPALIVE and
|
||||
///< \ref CONNECTION_BYTES_RECEIVED_CONTROL
|
||||
CONNECTION_PACKETLOSS_SPEECH, ///< Double. Percentage points of voice packets for the client that did not arrive at
|
||||
///< the client or server averaged across the last 5 seconds.
|
||||
CONNECTION_PACKETLOSS_KEEPALIVE, ///< Double. Percentage points of keep alive packets for the client that did not
|
||||
///< arrive at the client or server averaged across the last 5 seconds.
|
||||
CONNECTION_PACKETLOSS_CONTROL, ///< Double. Percentage points of command & control packets for the client that did
|
||||
///< not arrive at the client or server averaged across the last 5 seconds.
|
||||
CONNECTION_PACKETLOSS_TOTAL, ///< Double. Cumulative chance in percentage points with which a packet round trip
|
||||
///< failed because a packet was lost
|
||||
CONNECTION_SERVER2CLIENT_PACKETLOSS_SPEECH, ///< Double. Probability with which a voice packet sent by the server
|
||||
///< was not received by the client.
|
||||
CONNECTION_SERVER2CLIENT_PACKETLOSS_KEEPALIVE, ///< Double. Probability with which a keepalive packet sent by the
|
||||
///< server was not received by the client.
|
||||
CONNECTION_SERVER2CLIENT_PACKETLOSS_CONTROL, ///< Double. Probability with which a control packet sent by the server
|
||||
///< was not received by the client.
|
||||
CONNECTION_SERVER2CLIENT_PACKETLOSS_TOTAL, ///< Double. Probability with which a packet sent by the server was not
|
||||
///< received by the client.
|
||||
CONNECTION_CLIENT2SERVER_PACKETLOSS_SPEECH, ///< Double. Probability with which a speech packet sent by the client
|
||||
///< was not received by the server.
|
||||
CONNECTION_CLIENT2SERVER_PACKETLOSS_KEEPALIVE, ///< Double. Probability with which a keepalive packet sent by the
|
||||
///< client was not received by the server.
|
||||
CONNECTION_CLIENT2SERVER_PACKETLOSS_CONTROL, ///< Double. Probability with which a control packet sent by the client
|
||||
///< was not received by the server.
|
||||
CONNECTION_CLIENT2SERVER_PACKETLOSS_TOTAL, ///< Double. Probability with which a packet sent by the client was not
|
||||
///< received by the server.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_SECOND_SPEECH, ///< UInt64. Number of bytes sent for speech data in the last second.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_SECOND_KEEPALIVE, ///< UInt64. Number of bytes sent for keepalive data in the last second.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_SECOND_CONTROL, ///< UInt64. Number of bytes sent for control data in the last second.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_SECOND_TOTAL, ///< UInt64. Number of bytes sent in the last second.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_MINUTE_SPEECH, ///< UInt64. Bytes per second sent for speech data, averaged over the
|
||||
///< last minute.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_MINUTE_KEEPALIVE, ///< UInt64. Bytes per second sent for keepalive data, averaged
|
||||
///< over the last minute.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_MINUTE_CONTROL, ///< UInt64. Bytes per second sent for control data, averaged over
|
||||
///< the last minute.
|
||||
CONNECTION_BANDWIDTH_SENT_LAST_MINUTE_TOTAL, ///< UInt64. Bytes per second sent, averaged over the last minute.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_SECOND_SPEECH, ///< UInt64. Number of bytes received for speech data in the last second.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_SECOND_KEEPALIVE, ///< UInt64. Number of bytes received for keepalive data in the
|
||||
///< last second.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_SECOND_CONTROL, ///< UInt64. Number of bytes received for control data in the
|
||||
///< last second.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_SECOND_TOTAL, ///< UInt64. Number of bytes received in the last second.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_SPEECH, ///< UInt64. Bytes per second received for speech data, averaged
|
||||
///< over the last minute.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_KEEPALIVE, ///< UInt64. Bytes per second received for keepalive data,
|
||||
///< averaged over the last minute.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_CONTROL, ///< UInt64. Bytes per second received for control data, averaged
|
||||
///< over the last minute.
|
||||
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_TOTAL, ///< UInt64. Bytes per second received, averaged over the last minute.
|
||||
CONNECTION_DUMMY_0,
|
||||
CONNECTION_DUMMY_1,
|
||||
CONNECTION_DUMMY_2,
|
||||
CONNECTION_DUMMY_3,
|
||||
CONNECTION_DUMMY_4,
|
||||
CONNECTION_DUMMY_5,
|
||||
CONNECTION_DUMMY_6,
|
||||
CONNECTION_DUMMY_7,
|
||||
CONNECTION_DUMMY_8,
|
||||
CONNECTION_DUMMY_9,
|
||||
CONNECTION_FILETRANSFER_BANDWIDTH_SENT, ///< UInt64. Current file transfer upstream activity in bytes per second.
|
||||
///< Only available on request (\ref ts3client_requestServerConnectionInfo).
|
||||
CONNECTION_FILETRANSFER_BANDWIDTH_RECEIVED, ///< UInt64. Current file transfer downstream activity in bytes per
|
||||
///< second. Only available on request (\ref
|
||||
///< ts3client_requestServerConnectionInfo).
|
||||
CONNECTION_FILETRANSFER_BYTES_RECEIVED_TOTAL, ///< UInt64. Total downstream traffic, in bytes, used for file
|
||||
///< transfer since the server was started. Only available on request
|
||||
///< (\ref ts3client_requestServerConnectionInfo).
|
||||
CONNECTION_FILETRANSFER_BYTES_SENT_TOTAL, ///< UInt64. Total upstream traffic, in bytes, used for file transfer
|
||||
///< since the server was started. Only available on request (\ref
|
||||
///< ts3client_requestServerConnectionInfo).
|
||||
CONNECTION_ENDMARKER
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes a client position in 3 dimensional space, used for 3D Sound.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
float x; ///< X co-ordinate in 3D space.
|
||||
float y; ///< Y co-ordinate in 3D space.
|
||||
float z; ///< Z co-ordinate in 3D space.
|
||||
} TS3_VECTOR;
|
||||
|
||||
enum GroupWhisperType
|
||||
{
|
||||
GROUPWHISPERTYPE_SERVERGROUP = 0, ///< Whisper list consists of server groups
|
||||
GROUPWHISPERTYPE_CHANNELGROUP = 1, ///< Whisper list consists of channel groups
|
||||
GROUPWHISPERTYPE_CHANNELCOMMANDER = 2, ///< whisper to channel commanders
|
||||
GROUPWHISPERTYPE_ALLCLIENTS = 3, ///< whisper to all clients
|
||||
GROUPWHISPERTYPE_ENDMARKER,
|
||||
};
|
||||
|
||||
enum GroupWhisperTargetMode
|
||||
{
|
||||
GROUPWHISPERTARGETMODE_ALL = 0,
|
||||
GROUPWHISPERTARGETMODE_CURRENTCHANNEL = 1, ///< Whisper the current channel of the client
|
||||
GROUPWHISPERTARGETMODE_PARENTCHANNEL = 2, ///< Whisper the parent channel of whatever channel the client is currently in
|
||||
GROUPWHISPERTARGETMODE_ALLPARENTCHANNELS = 3, ///< Whipser to the parent channel and all their parent channels as well
|
||||
GROUPWHISPERTARGETMODE_CHANNELFAMILY = 4, ///< Whisper to the current channel and all its sub channels
|
||||
GROUPWHISPERTARGETMODE_ANCESTORCHANNELFAMILY = 5, ///< Whisper to the current channel, all its parent and sub channels.
|
||||
GROUPWHISPERTARGETMODE_SUBCHANNELS = 6, ///< Whisper to all sub channels of the current channel of the client
|
||||
GROUPWHISPERTARGETMODE_ENDMARKER,
|
||||
};
|
||||
|
||||
enum MonoSoundDestination
|
||||
{
|
||||
MONO_SOUND_DESTINATION_ALL = 0, ///< Send mono sound to all available speakers
|
||||
MONO_SOUND_DESTINATION_FRONT_CENTER = 1, ///< Send mono sound to front center speaker if available
|
||||
MONO_SOUND_DESTINATION_FRONT_LEFT_AND_RIGHT = 2 ///< Send mono sound to front left/right speakers if available
|
||||
};
|
||||
|
||||
enum SecuritySaltOptions
|
||||
{
|
||||
SECURITY_SALT_CHECK_NICKNAME = 1, ///< put nickname into security hash
|
||||
SECURITY_SALT_CHECK_META_DATA = 2 ///< put meta data into security hash
|
||||
};
|
||||
|
||||
/*this enum is used to disable client commands on the server*/
|
||||
enum ClientCommand
|
||||
{
|
||||
CLIENT_COMMAND_requestConnectionInfo = 0, ///< disable client connection info request (client bandwidth usage, ip,
|
||||
///< port, ping)
|
||||
CLIENT_COMMAND_requestClientMove = 1, ///< disable moving clients
|
||||
CLIENT_COMMAND_requestXXMuteClients = 2, ///< disable muting other clients
|
||||
CLIENT_COMMAND_requestClientKickFromXXX = 3, ///< disable kicking clients
|
||||
CLIENT_COMMAND_flushChannelCreation = 4, ///< disable creating channels
|
||||
CLIENT_COMMAND_flushChannelUpdates = 5, ///< disable editing channels
|
||||
CLIENT_COMMAND_requestChannelMove = 6, ///< disable moving channels
|
||||
CLIENT_COMMAND_requestChannelDelete = 7, ///< disable deleting channels
|
||||
CLIENT_COMMAND_requestChannelDescription = 8, ///< disable channel descriptions
|
||||
CLIENT_COMMAND_requestChannelXXSubscribeXXX = 9, ///< disable being able to see clients in channels other than the
|
||||
///< current channel the client is in
|
||||
CLIENT_COMMAND_requestServerConnectionInfo = 10, ///< disable server connection info request (server bandwidth
|
||||
///< usage, ip, port, ping)
|
||||
CLIENT_COMMAND_requestSendXXXTextMsg = 11, ///< disable text messaging
|
||||
CLIENT_COMMAND_filetransfers = 12, ///< disable file transfer
|
||||
CLIENT_COMMAND_ENDMARKER
|
||||
};
|
||||
|
||||
/* Access Control List*/
|
||||
enum ACLType
|
||||
{
|
||||
ACL_NONE = 0,
|
||||
ACL_WHITE_LIST = 1,
|
||||
ACL_BLACK_LIST = 2
|
||||
};
|
||||
|
||||
/* file transfer actions*/
|
||||
enum FTAction
|
||||
{
|
||||
FT_INIT_SERVER = 0, ///< The virtual server is created. result->channelPath can be changed to create a different
|
||||
///< directory than the default 'virtualserver_x' where x is the virtual server.
|
||||
FT_INIT_CHANNEL = 1, ///< A channel is created. result->channelPath can be changed to create a different directory
|
||||
///< then the default 'channel_x' where x is the channel id.
|
||||
FT_UPLOAD = 2, ///< A file is being uploaded. All values in the result struct can be modified.
|
||||
FT_DOWNLOAD = 3, ///< A file is being downloaded. All values in the result struct can be modified.
|
||||
FT_DELETE = 4, ///< A file is being deleted. All values in the result struct can be modified.
|
||||
FT_CREATEDIR = 5, ///< A directory is being created in a channel. All values in the result struct can be modified.
|
||||
FT_RENAME = 6, ///< A file or folder is being renamed. The callback will be called twice! Once for the old and then
|
||||
///< for the new name. All values in the result struct can be modified.
|
||||
FT_FILELIST = 7, ///< A directory listing is requested. All values in the result struct can be modified.
|
||||
FT_FILEINFO = 8 ///< Information of a file is requested. All values in the result struct can be modified.
|
||||
};
|
||||
|
||||
/* file transfer status */
|
||||
enum FileTransferState
|
||||
{
|
||||
FILETRANSFER_INITIALISING = 0, ///< File transfer is establishing connection.
|
||||
FILETRANSFER_ACTIVE, ///< File transfer is in progress
|
||||
FILETRANSFER_FINISHED, ///< File transfer has finished
|
||||
};
|
||||
|
||||
/* file transfer types */
|
||||
enum FileTransferType
|
||||
{
|
||||
FileListType_Directory = 0, ///< The file entry is a directory
|
||||
FileListType_File, ///< The file entry is a regular file
|
||||
};
|
||||
|
||||
/* some structs to handle variables in callbacks */
|
||||
#define MAX_VARIABLES_EXPORT_COUNT 64
|
||||
struct VariablesExportItem
|
||||
{
|
||||
unsigned char itemIsValid; ///< Whether or not there is any data in this item. Ignore this item if this is 0.
|
||||
unsigned char proposedIsSet; ///< The value in proposed is set. If 0 ignore proposed
|
||||
const char* current; ///< current value (stored in memory)
|
||||
const char* proposed; ///< New value to change to (const, so no updates please)
|
||||
};
|
||||
|
||||
struct VariablesExport
|
||||
{
|
||||
struct VariablesExportItem items[MAX_VARIABLES_EXPORT_COUNT];
|
||||
};
|
||||
|
||||
struct ClientMiniExport
|
||||
{
|
||||
anyID ID; ///< id of the client
|
||||
uint64 channel; ///< the channel the client is in
|
||||
const char* ident; ///< client public identity
|
||||
const char* nickname; ///< client display name
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure used to describe a file transfer in the \ref ServerLibFunctions.onTransformFilePath callback.
|
||||
* This describes the original values, and also contains hints for length limitations of the result parameter
|
||||
* of the callback.
|
||||
* \verbatim embed:rst
|
||||
.. important::
|
||||
Which values of the struct can be modified is defined by the action value of the original parameter.
|
||||
\endverbatim
|
||||
*/
|
||||
struct TransformFilePathExport
|
||||
{
|
||||
uint64 channel; ///< The channel id of the file. 0 if action is \ref FT_INIT_SERVER
|
||||
const char* filename; ///< utf8 encoded c string containing the original file name as intended by the client.
|
||||
int action; ///< The action to be performed. One of the values from the \ref FTAction enum. Defines which values of
|
||||
///< the result struct can be modified.
|
||||
int transformedFileNameMaxSize; ///< The maximum length the file name can be rewritten to.
|
||||
int channelPathMaxSize; ///< The maximum length the path can be rewritten to.
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure to rewrite the file transfer file name and path in the \ref ServerLibFunctions.onTransformFilePath callback.
|
||||
* The lengths are limited as described in the original parameter.
|
||||
* \verbatim embed:rst
|
||||
.. important::
|
||||
Which values of the struct can be modified is defined by the action value of the original parameter.
|
||||
\endverbatim
|
||||
*/
|
||||
struct TransformFilePathExportReturns
|
||||
{
|
||||
char* transformedFileName; ///< pointer to target file name. Fill the memory pointed to with an utf8 encoded c string
|
||||
///< containing the new file name. Limited to original->transformedFileNameMaxSize bytes.
|
||||
char* channelPath; ///< pointer to memory for new path. Fill the memory pointed to with an utf8 encoded c string
|
||||
///< containing the new path. Limited to original->channelPathMaxSize bytes.
|
||||
int logFileAction; ///< boolean (1/0). Whether to log this file transfer to the log. Action is not logged regardless
|
||||
///< of this value if the servers \ref VIRTUALSERVER_LOG_FILETRANSFER property is 0.
|
||||
};
|
||||
|
||||
struct FileTransferCallbackExport
|
||||
{
|
||||
anyID clientID; ///< the client who started the file transfer
|
||||
anyID transferID; ///< local identifier of the transfer that has completed
|
||||
anyID remoteTransferID; ///< remote identifier of the transfer that has completed
|
||||
unsigned int status; ///< status of the transfer. One of the values from the \ref FileTransferState enum
|
||||
const char* statusMessage; ///< utf8 encoded c string containing a human readable description of the status
|
||||
uint64 remotefileSize; ///< size in bytes of the complete file to be transferred
|
||||
uint64 bytes; ///< number of bytes transferred. Same as remotefileSize when the transfer completed entirely.
|
||||
int isSender; ///< boolean. 1 if the server is sending the file. 0 if the server is receiving the file.
|
||||
};
|
||||
|
||||
/*define for file transfer bandwith limits*/
|
||||
#define BANDWIDTH_LIMIT_UNLIMITED 0xFFFFFFFFFFFFFFFFll
|
||||
|
||||
|
||||
/*defines for speaker locations used by some sound callbacks*/
|
||||
#ifndef SPEAKER_FRONT_LEFT
|
||||
#define SPEAKER_FRONT_LEFT 0x1
|
||||
#define SPEAKER_FRONT_RIGHT 0x2
|
||||
#define SPEAKER_FRONT_CENTER 0x4
|
||||
#define SPEAKER_LOW_FREQUENCY 0x8
|
||||
#define SPEAKER_BACK_LEFT 0x10
|
||||
#define SPEAKER_BACK_RIGHT 0x20
|
||||
#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40
|
||||
#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
|
||||
#define SPEAKER_BACK_CENTER 0x100
|
||||
#define SPEAKER_SIDE_LEFT 0x200
|
||||
#define SPEAKER_SIDE_RIGHT 0x400
|
||||
#define SPEAKER_TOP_CENTER 0x800
|
||||
#define SPEAKER_TOP_FRONT_LEFT 0x1000
|
||||
#define SPEAKER_TOP_FRONT_CENTER 0x2000
|
||||
#define SPEAKER_TOP_FRONT_RIGHT 0x4000
|
||||
#define SPEAKER_TOP_BACK_LEFT 0x8000
|
||||
#define SPEAKER_TOP_BACK_CENTER 0x10000
|
||||
#define SPEAKER_TOP_BACK_RIGHT 0x20000
|
||||
#endif
|
||||
#define SPEAKER_HEADPHONES_LEFT 0x10000000
|
||||
#define SPEAKER_HEADPHONES_RIGHT 0x20000000
|
||||
#define SPEAKER_MONO 0x40000000
|
||||
|
||||
#endif /*PUBLIC_DEFINITIONS_H*/
|
||||
+217
@@ -0,0 +1,217 @@
|
||||
#ifndef PUBLIC_ERRORS_H
|
||||
#define PUBLIC_ERRORS_H
|
||||
|
||||
//The idea here is: the values are 2 bytes wide, the first byte identifies the group, the second the count within that group
|
||||
|
||||
enum Ts3ErrorType {
|
||||
//general
|
||||
ERROR_ok = 0x0000, ///< Indicates success.
|
||||
ERROR_undefined = 0x0001,
|
||||
ERROR_not_implemented = 0x0002, ///< The attempted operation is not available in this context
|
||||
ERROR_ok_no_update = 0x0003, ///< Indicates success, but no change occurred. Returned for example upon flushing (e.g. using \ref ts3client_flushChannelUpdates) when all indicated changes already matched the current state.
|
||||
ERROR_dont_notify = 0x0004,
|
||||
ERROR_lib_time_limit_reached = 0x0005,
|
||||
ERROR_out_of_memory = 0x0006, ///< Not enough system memory to perform operation
|
||||
ERROR_canceled = 0x0007,
|
||||
ERROR_ok_no_error_event = 0x0008, ///< Indicates success, but no error event was generated. This is used because of the return code management and reduce packets.
|
||||
|
||||
//dunno
|
||||
ERROR_command_not_found = 0x0100,
|
||||
ERROR_unable_to_bind_network_port = 0x0101, ///< Unspecified failure to create a listening port
|
||||
ERROR_no_network_port_available = 0x0102, ///< Failure to initialize a listening port for FileTransfer
|
||||
ERROR_port_already_in_use = 0x0103, ///< Specified port is already in use by a different application
|
||||
ERROR_command_line_parse_failed = 0x0104, ///< Command line arguments are invalid
|
||||
ERROR_command_line_exit_version = 0x0105, ///< Command line specified version. The process should exit with code 0 after printing the version.
|
||||
ERROR_command_line_exit_help = 0x0106, ///< Command line specified help. The process should exit with code 0 after priting the help.
|
||||
|
||||
//client
|
||||
ERROR_client_invalid_id = 0x0200, ///< Client no longer connected
|
||||
ERROR_client_nickname_inuse = 0x0201, ///< Client name is already in use. Client names must be unique
|
||||
ERROR_client_protocol_limit_reached = 0x0203, ///< Too many clients on the server
|
||||
ERROR_client_invalid_type = 0x0204, ///< Function called for normal clients that is only available for query clients or vice versa
|
||||
ERROR_client_already_subscribed = 0x0205, ///< Attempting to subscribe to a channel already subscribed to
|
||||
ERROR_client_not_logged_in = 0x0206,
|
||||
ERROR_client_could_not_validate_identity = 0x0207, ///< Identity not valid or insufficient security level
|
||||
ERROR_client_invalid_password = 0x0208,
|
||||
ERROR_client_version_outdated = 0x020a, ///< Server requires newer client version as determined by the min_client_version properties
|
||||
ERROR_client_is_flooding = 0x020c, ///< Triggered flood protection. Further information is supplied in the extra message if applicable.
|
||||
ERROR_client_hacked = 0x020d,
|
||||
ERROR_client_cannot_verify_now = 0x020e,
|
||||
ERROR_client_login_not_permitted = 0x020f,
|
||||
ERROR_client_not_subscribed = 0x0210, ///< Action is only available on subscribed channels
|
||||
|
||||
//channel
|
||||
ERROR_channel_invalid_id = 0x0300, ///< Channel does not exist on the server (any longer)
|
||||
ERROR_channel_protocol_limit_reached = 0x0301, ///< Too many channels on the server
|
||||
ERROR_channel_already_in = 0x0302, ///< Attempting to move a client or channel to its current channel
|
||||
ERROR_channel_name_inuse = 0x0303, ///< Channel name is already taken by another channel. Channel names must be unique
|
||||
ERROR_channel_not_empty = 0x0304, ///< Attempting to delete a channel with clients or sub channels in it
|
||||
ERROR_channel_can_not_delete_default = 0x0305, ///< Default channel cannot be deleted. Set a new default channel first (see \ref ts3client_setChannelVariableAsInt or \ref ts3server_setChannelVariableAsInt )
|
||||
ERROR_channel_default_require_permanent = 0x0306, ///< Attempt to set a non permanent channel as default channel. Set channel to permanent first (see \ref ts3client_setChannelVariableAsInt or \ref ts3server_setChannelVariableAsInt )
|
||||
ERROR_channel_invalid_flags = 0x0307, ///< Invalid combination of \ref ChannelProperties, trying to remove \ref CHANNEL_FLAG_DEFAULT or set a password on the default channel
|
||||
ERROR_channel_parent_not_permanent = 0x0308, ///< Attempt to move a permanent channel into a non-permanent one, or set a channel to be permanent that is a sub channel of a non-permanent one
|
||||
ERROR_channel_maxclients_reached = 0x0309, ///< Channel is full as determined by its \ref CHANNEL_MAXCLIENTS setting
|
||||
ERROR_channel_maxfamily_reached = 0x030a, ///< Channel tree is full as determined by its \ref CHANNEL_MAXFAMILYCLIENTS setting
|
||||
ERROR_channel_invalid_order = 0x030b, ///< Invalid value for the \ref CHANNEL_ORDER property. The specified channel must exist on the server and be on the same level.
|
||||
ERROR_channel_no_filetransfer_supported = 0x030c, ///< Invalid \ref CHANNEL_FILEPATH set for the channel
|
||||
ERROR_channel_invalid_password = 0x030d, ///< Channel has a password not matching the password supplied in the call
|
||||
// used in public_rare_errors = 0x030e,
|
||||
ERROR_channel_invalid_security_hash = 0x030f,
|
||||
|
||||
//server
|
||||
ERROR_server_invalid_id = 0x0400, ///< Chosen virtual server does not exist or is offline
|
||||
ERROR_server_running = 0x0401, ///< attempting to delete a server that is running. Stop the server before deleting it.
|
||||
ERROR_server_is_shutting_down = 0x0402, ///< Client disconnected because the server is going offline
|
||||
ERROR_server_maxclients_reached = 0x0403, ///< Given in the onConnectStatusChange event when the server has reached its maximum number of clients as defined by the \ref VIRTUALSERVER_MAXCLIENTS property
|
||||
ERROR_server_invalid_password = 0x0404, ///< Specified server password is wrong. Provide the correct password in the \ref ts3client_startConnection / \ref ts3client_startConnectionWithChannelID call.
|
||||
ERROR_server_is_virtual = 0x0407, ///< Server is in virtual status. The attempted action is not possible in this state. Start the virtual server first.
|
||||
ERROR_server_is_not_running = 0x0409, ///< Attempting to stop a server that is not online.
|
||||
ERROR_server_is_booting = 0x040a, // Not used
|
||||
ERROR_server_status_invalid = 0x040b,
|
||||
ERROR_server_version_outdated = 0x040d, ///< Attempt to connect to an outdated server version. The server needs to be updated.
|
||||
ERROR_server_duplicate_running = 0x040e, ///< This server is already running within the instance. Each virtual server may only exist once.
|
||||
|
||||
//parameter
|
||||
ERROR_parameter_quote = 0x0600, // Not used
|
||||
ERROR_parameter_invalid_count = 0x0601, ///< Attempt to flush changes without previously calling set*VariableAs* since the last flush
|
||||
ERROR_parameter_invalid = 0x0602, ///< At least one of the supplied parameters did not meet the criteria for that parameter
|
||||
ERROR_parameter_not_found = 0x0603, ///< Failure to supply all the necessary parameters
|
||||
ERROR_parameter_convert = 0x0604, ///< Invalid type supplied for a parameter, such as passing a string (ie. "five") that expects a number.
|
||||
ERROR_parameter_invalid_size = 0x0605, ///< Value out of allowed range. Such as strings are too long/short or numeric values outside allowed range
|
||||
ERROR_parameter_missing = 0x0606, ///< Neglecting to specify a required parameter
|
||||
ERROR_parameter_checksum = 0x0607, ///< Attempting to deploy a modified snapshot
|
||||
|
||||
//unsorted, need further investigation
|
||||
ERROR_vs_critical = 0x0700, ///< Failure to create default channel
|
||||
ERROR_connection_lost = 0x0701, ///< Generic error with the connection.
|
||||
ERROR_not_connected = 0x0702, ///< Attempting to call functions with a serverConnectionHandler that is not connected. You can use \ref ts3client_getConnectionStatus to check whether the connection handler is connected to a server
|
||||
ERROR_no_cached_connection_info = 0x0703, ///< Attempting to query connection information (bandwidth usage, ping, etc) without requesting them first using \ref ts3client_requestConnectionInfo
|
||||
ERROR_currently_not_possible = 0x0704, ///< Requested information is not currently available. You may have to call \ref ts3client_requestClientVariables or \ref ts3client_requestServerVariables
|
||||
ERROR_failed_connection_initialisation = 0x0705, ///< No TeamSpeak server running on the specified IP address and port
|
||||
ERROR_could_not_resolve_hostname = 0x0706, ///< Failure to resolve the specified hostname to an IP address
|
||||
ERROR_invalid_server_connection_handler_id = 0x0707, ///< Attempting to perform actions on a non-existent server connection handler
|
||||
ERROR_could_not_initialise_input_manager = 0x0708, // Not used
|
||||
ERROR_clientlibrary_not_initialised = 0x0709, ///< Calling client library functions without successfully calling \ref ts3client_initClientLib before
|
||||
ERROR_serverlibrary_not_initialised = 0x070a, ///< Calling server library functions without successfully calling \ref ts3server_initServerLib before
|
||||
ERROR_whisper_too_many_targets = 0x070b, ///< Using a whisper list that contain more clients than the servers \ref VIRTUALSERVER_MIN_CLIENTS_IN_CHANNEL_BEFORE_FORCED_SILENCE property
|
||||
ERROR_whisper_no_targets = 0x070c, ///< The active whisper list is empty or no clients matched the whisper list (e.g. all channels in the list are empty)
|
||||
ERROR_connection_ip_protocol_missing = 0x070d, ///< Invalid or unsupported protocol (e.g. attempting an IPv6 connection on an IPv4 only machine)
|
||||
ERROR_handshake_failed = 0x070e,
|
||||
ERROR_illegal_server_license = 0x070f,
|
||||
|
||||
//file transfer
|
||||
ERROR_file_invalid_name = 0x0800, ///< Invalid UTF8 string or not a valid file
|
||||
ERROR_file_invalid_permissions = 0x0801, ///< Permissions prevent opening the file
|
||||
ERROR_file_already_exists = 0x0802, ///< Target path already exists as a directory
|
||||
ERROR_file_not_found = 0x0803, ///< Attempt to access or move non existing file
|
||||
ERROR_file_io_error = 0x0804, ///< Generic file input / output error
|
||||
ERROR_file_invalid_transfer_id = 0x0805, ///< Attempt to get information about a file transfer after it has already been cleaned up. File transfer information is not available indefinitely after the transfer completed
|
||||
ERROR_file_invalid_path = 0x0806, ///< specified path contains invalid characters or does not start with "/"
|
||||
ERROR_file_no_files_available = 0x0807, // Not used
|
||||
ERROR_file_overwrite_excludes_resume = 0x0808, ///< File overwrite and resume are mutually exclusive. Only one or neither can be 1.
|
||||
ERROR_file_invalid_size = 0x0809, ///< Attempt to write more bytes than claimed file size.
|
||||
ERROR_file_already_in_use = 0x080a, ///< File is currently not available, try again later.
|
||||
ERROR_file_could_not_open_connection = 0x080b, ///< Generic failure in file transfer connection / other party did not conform to file transfer protocol
|
||||
ERROR_file_no_space_left_on_device = 0x080c, ///< Operating system reports hard disk is full. May be caused by quota limitations.
|
||||
ERROR_file_exceeds_file_system_maximum_size = 0x080d, ///< File is too large for the file system of the target device.
|
||||
ERROR_file_transfer_connection_timeout = 0x080e, // Not used
|
||||
ERROR_file_connection_lost = 0x080f, ///< File input / output timeout or connection failure
|
||||
ERROR_file_exceeds_supplied_size = 0x0810, // Not used
|
||||
ERROR_file_transfer_complete = 0x0811, ///< Indicates successful completion
|
||||
ERROR_file_transfer_canceled = 0x0812, ///< Transfer was cancelled through @ref ts3client_haltTransfer
|
||||
ERROR_file_transfer_interrupted = 0x0813, ///< Transfer failed because the server is shutting down, or network connection issues
|
||||
ERROR_file_transfer_server_quota_exceeded = 0x0814, ///< Transfer terminated due to server bandwidth quota being exceeded. No client can transfer files.
|
||||
ERROR_file_transfer_client_quota_exceeded = 0x0815, ///< Attempt to transfer more data than allowed by this clients' bandwidth quota. Other clients may continue to transfer files.
|
||||
ERROR_file_transfer_reset = 0x0816, // Not used
|
||||
ERROR_file_transfer_limit_reached = 0x0817, ///< Too many file transfers are in progress. Try again later
|
||||
ERROR_file_invalid_storage_class = 0x0818, // TODO: Invalid storage class for HTTP FileTransfer (what is a storage class?)
|
||||
ERROR_file_invalid_dimension = 0x0819, ///< Avatar image exceeds maximum width or height accepted by the server.
|
||||
ERROR_file_transfer_channel_quota_exceeded = 0x081a, ///< Transfer failed because the channel quota was exceeded. Uploading to this channel is not possible, but other channels may be fine.
|
||||
|
||||
//sound
|
||||
ERROR_sound_preprocessor_disabled = 0x0900, ///< Cannot set or query pre processor variables with preprocessing disabled
|
||||
ERROR_sound_internal_preprocessor = 0x0901,
|
||||
ERROR_sound_internal_encoder = 0x0902,
|
||||
ERROR_sound_internal_playback = 0x0903,
|
||||
ERROR_sound_no_capture_device_available = 0x0904, ///< No audio capture devices are available
|
||||
ERROR_sound_no_playback_device_available = 0x0905, ///< No audio playback devices are available
|
||||
ERROR_sound_could_not_open_capture_device = 0x0906, ///< Error accessing audio device, or audio device does not support the requested mode
|
||||
ERROR_sound_could_not_open_playback_device = 0x0907, ///< Error accessing audio device, or audio device does not support the requested mode
|
||||
ERROR_sound_handler_has_device = 0x0908, ///< Attempt to open a sound device on a connection handler which already has an open device. Close the already open device first using \ref ts3client_closeCaptureDevice or \ref ts3client_closePlaybackDevice
|
||||
ERROR_sound_invalid_capture_device = 0x0909, ///< Attempt to use a device for capture that does not support capturing audio
|
||||
ERROR_sound_invalid_playback_device = 0x090a, ///< Attempt to use a device for playback that does not support playback of audio
|
||||
ERROR_sound_invalid_wave = 0x090b, ///< Attempt to use a non WAV file in \ref ts3client_playWaveFile or \ref ts3client_playWaveFileHandle
|
||||
ERROR_sound_unsupported_wave = 0x090c, ///< Unsupported wave file used in \ref ts3client_playWaveFile or \ref ts3client_playWaveFileHandle.
|
||||
ERROR_sound_open_wave = 0x090d, ///< Failure to open the specified sound file
|
||||
ERROR_sound_internal_capture = 0x090e,
|
||||
ERROR_sound_device_in_use = 0x090f, ///< Attempt to unregister a custom device that is being used. Close the device first using \ref ts3client_closeCaptureDevice or \ref ts3client_closePlaybackDevice
|
||||
ERROR_sound_device_already_registerred = 0x0910, ///< Attempt to register a custom device with a device id that has already been used in a previous call. Device ids must be unique.
|
||||
ERROR_sound_unknown_device = 0x0911, ///< Attempt to open, close, unregister or use a device which is not known. Custom devices must be registered before being used (see \ref ts3client_registerCustomDevice)
|
||||
ERROR_sound_unsupported_frequency = 0x0912,
|
||||
ERROR_sound_invalid_channel_count = 0x0913, ///< Invalid device audio channel count, must be > 0
|
||||
ERROR_sound_read_wave = 0x0914, ///< Failure to read sound samples from an opened wave file. Is this a valid wave file?
|
||||
ERROR_sound_need_more_data = 0x0915, // for internal purposes only
|
||||
ERROR_sound_device_busy = 0x0916, // for internal purposes only
|
||||
ERROR_sound_no_data = 0x0917, ///< Indicates there is currently no data for playback, e.g. nobody is speaking right now.
|
||||
ERROR_sound_channel_mask_mismatch = 0x0918, ///< Opening a device with an unsupported channel count
|
||||
|
||||
//permissions
|
||||
ERROR_permissions_client_insufficient = 0x0a08, ///< Not enough permissions to perform the requested activity
|
||||
ERROR_permissions = 0x0a0c, ///< Permissions to use sound device not granted by operating system, e.g. Windows denied microphone access.
|
||||
|
||||
//accounting
|
||||
ERROR_accounting_virtualserver_limit_reached = 0x0b00, ///< Attempt to use more virtual servers than allowed by the license
|
||||
ERROR_accounting_slot_limit_reached = 0x0b01, ///< Attempt to set more slots than allowed by the license
|
||||
ERROR_accounting_license_file_not_found = 0x0b02, // Not used
|
||||
ERROR_accounting_license_date_not_ok = 0x0b03, ///< License expired or not valid yet
|
||||
ERROR_accounting_unable_to_connect_to_server = 0x0b04, ///< Failure to communicate with accounting backend
|
||||
ERROR_accounting_unknown_error = 0x0b05, ///< Failure to write update license file
|
||||
ERROR_accounting_server_error = 0x0b06, // Not used
|
||||
ERROR_accounting_instance_limit_reached = 0x0b07, ///< More than one process of the server is running
|
||||
ERROR_accounting_instance_check_error = 0x0b08, ///< Shared memory access failure.
|
||||
ERROR_accounting_license_file_invalid = 0x0b09, ///< License is not a TeamSpeak license
|
||||
ERROR_accounting_running_elsewhere = 0x0b0a, ///< A copy of this server is already running in another instance. Each server may only exist once.
|
||||
ERROR_accounting_instance_duplicated = 0x0b0b, ///< A copy of this server is running already in this process. Each server may only exist once.
|
||||
ERROR_accounting_already_started = 0x0b0c, ///< Attempt to start a server that is already running
|
||||
ERROR_accounting_not_started = 0x0b0d,
|
||||
ERROR_accounting_to_many_starts = 0x0b0e, ///< Starting instance / virtual servers too often in too short a time period
|
||||
|
||||
//provisioning server
|
||||
/// @cond HAS_PROVISIONING
|
||||
ERROR_provisioning_invalid_password = 0x1100,
|
||||
ERROR_provisioning_invalid_request = 0x1101,
|
||||
ERROR_provisioning_no_slots_available = 0x1102,
|
||||
ERROR_provisioning_pool_missing = 0x1103,
|
||||
ERROR_provisioning_pool_unknown = 0x1104,
|
||||
ERROR_provisioning_unknown_ip_location = 0x1105,
|
||||
ERROR_provisioning_internal_tries_exceeded = 0x1106,
|
||||
ERROR_provisioning_too_many_slots_requested = 0x1107,
|
||||
ERROR_provisioning_too_many_reserved = 0x1108,
|
||||
ERROR_provisioning_could_not_connect = 0x1109,
|
||||
ERROR_provisioning_auth_server_not_connected = 0x1110,
|
||||
ERROR_provisioning_auth_data_too_large = 0x1111,
|
||||
ERROR_provisioning_already_initialized = 0x1112,
|
||||
ERROR_provisioning_not_initialized = 0x1113,
|
||||
ERROR_provisioning_connecting = 0x1114,
|
||||
ERROR_provisioning_already_connected = 0x1115,
|
||||
ERROR_provisioning_not_connected = 0x1116,
|
||||
ERROR_provisioning_io_error = 0x1117,
|
||||
ERROR_provisioning_invalid_timeout = 0x1118,
|
||||
ERROR_provisioning_ts3server_not_found = 0x1119,
|
||||
ERROR_provisioning_no_permission = 0x111A,
|
||||
/// @endcond
|
||||
|
||||
// 0x12 - 0x15 are reserved in rare
|
||||
|
||||
// screen share
|
||||
ERROR_already_registered = 0x1600,
|
||||
ERROR_stream_session_limit_reached = 0x1601,
|
||||
ERROR_stream_session_not_found = 0x1602,
|
||||
ERROR_stream_unknown = 0x1603,
|
||||
ERROR_stream_not_participating = 0x1604,
|
||||
ERROR_not_streamer = 0x1605,
|
||||
ERROR_already_joined = 0x1606,
|
||||
ERROR_join_request_not_found = 0x1607,
|
||||
ERROR_sfu_failed_to_start = 0x1608,
|
||||
};
|
||||
#endif
|
||||
+236
@@ -0,0 +1,236 @@
|
||||
#ifndef TS_SESSION_SUBSCRIBER_PROTOCOL_H_
|
||||
#define TS_SESSION_SUBSCRIBER_PROTOCOL_H_
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
// Version definitions.
|
||||
#define TS_SESSION_SUBSCRIBER_COMMAND_VERSION_1 1
|
||||
|
||||
|
||||
// Protocol used for communication between the session subscriber and the session (a single stream).
|
||||
// Commands are sent bidirectionally or unidirectionally between the parties.
|
||||
// e.g. SESSION => SUBSCRIBER: ON_FRAME, ON_PAUSED_CHANGED
|
||||
// e.g. SUBSCRIBER => SESSION: ON_FRAME_ACK, ON_RESIZE
|
||||
|
||||
|
||||
// Command type enum with a lowercase type name.
|
||||
typedef enum
|
||||
{
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_FRAME = 0,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_RESIZE,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_PAUSED_CHANGED,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_FRAME_ACK,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_BUFFER_SINGLE,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_BUFFER_FRONT_BACK,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_RELEASE_BUFFER,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ADD_SUBSCRIBER,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ADD_SUBSCRIBER_RESP,
|
||||
TS_SESSION_SUBSCRIBER_CMD_REMOVE_SUBSCRIBER,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_AUDIO_FRAMES,
|
||||
TS_SESSION_SUBSCRIBER_CMD_ON_AUDIO_ENABLED_CHANGED,
|
||||
} ts_session_subscriber_command_type_t;
|
||||
|
||||
// Pixel format enum.
|
||||
typedef enum
|
||||
{
|
||||
TS_SESSION_SUBSCRIBER_PIXEL_FORMAT_I420 = 0,
|
||||
TS_SESSION_SUBSCRIBER_PIXEL_FORMAT_NV12,
|
||||
TS_SESSION_SUBSCRIBER_PIXEL_FORMAT_ABGR,
|
||||
TS_SESSION_SUBSCRIBER_PIXEL_FORMAT_ARGB,
|
||||
} ts_session_subscriber_pixel_format_t;
|
||||
|
||||
// Buffer location enum.
|
||||
typedef enum
|
||||
{
|
||||
TS_SESSION_SUBSCRIBER_BUFFER_LOCATION_CPU = 0,
|
||||
TS_SESSION_SUBSCRIBER_BUFFER_LOCATION_GPU
|
||||
} ts_session_subscriber_buffer_location_t;
|
||||
|
||||
// Buffer type enum.
|
||||
typedef enum
|
||||
{
|
||||
TS_SESSION_SUBSCRIBER_BUFFER_TYPE_SINGLE = 0,
|
||||
TS_SESSION_SUBSCRIBER_BUFFER_TYPE_FRONT_BACK_MAIN,
|
||||
TS_SESSION_SUBSCRIBER_BUFFER_TYPE_FRONT_BACK_SUB
|
||||
} ts_session_subscriber_buffer_type_t;
|
||||
|
||||
#if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
|
||||
#pragma pack(push, 4)
|
||||
#endif
|
||||
|
||||
// Main buffer header for shared CPU Memory Front/Back Buffers.
|
||||
// The Main Buffer contains metadata about the current front/back buffer and the versioning for both the main and sub buffer.
|
||||
// The information from the main buffer can be used to always read the front buffer.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t version; // E.g., TS_SESSION_SUBSCRIBER_COMMAND_VERSION_1.
|
||||
uint32_t front_buffer_index; // index of the front buffer. (0: main buffer, 1: sub buffer)
|
||||
uint32_t length; // length of valid data of this buffer.
|
||||
uint32_t pixel_data_offset; // offset of pixel data from the beginning of this buffer. (in bytes, total length of pixel data = length - pixel_data_offset)
|
||||
uint32_t frame_id; // frame id. (used to skip duplicated frames)
|
||||
uint32_t width; // width of the frame.
|
||||
uint32_t height; // height of the frame.
|
||||
ts_session_subscriber_pixel_format_t pixel_format; // pixel format.
|
||||
} ts_session_subscriber_main_buffer_header_t;
|
||||
|
||||
// Sub buffer header.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t length; // length of valid data of this buffer.
|
||||
uint32_t pixel_data_offset; // offset of pixel data from the beginning of this buffer. (in bytes, total length of pixel data = length - pixel_data_offset)
|
||||
uint32_t frame_id; // frame id. (used to skip duplicated frames)
|
||||
uint32_t width; // width of the frame.
|
||||
uint32_t height; // height of the frame.
|
||||
} ts_session_subscriber_sub_buffer_header_t;
|
||||
|
||||
// Single frame buffer header.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t version; // E.g., TS_SESSION_SUBSCRIBER_COMMAND_VERSION_1.
|
||||
uint32_t length; // length of valid data of this buffer.
|
||||
uint32_t pixel_data_offset; // offset of pixel data from the beginning of this buffer. (in bytes, total length of pixel data = length - pixel_data_offset)
|
||||
uint32_t frame_id; // frame id. (used to skip duplicated frames)
|
||||
uint32_t width; // width of the frame.
|
||||
uint32_t height; // height of the frame.
|
||||
ts_session_subscriber_pixel_format_t pixel_format; // pixel format.
|
||||
} ts_session_subscriber_single_frame_buffer_header_t;
|
||||
|
||||
// Command header.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t version; // E.g., TS_SESSION_SUBSCRIBER_COMMAND_VERSION_1.
|
||||
uint32_t length; // Total message length (header + payload).
|
||||
ts_session_subscriber_command_type_t type;
|
||||
uint64_t target_session_id; // always set to the target session id this command is for or is originating from.
|
||||
uint64_t target_subscriber_id; // 0 if broadcast.
|
||||
} ts_session_subscriber_command_header_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_FRAME.
|
||||
// The frame data is not included in the message, but is attached seperately or was sent beforehand. The buffer is identified by it's id.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t buffer_id; // buffer id, in general the memory address of the buffer in the client lib process.
|
||||
} ts_session_subscriber_on_frame_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_FRAME_ACK
|
||||
// SUBSCRIBER => SESSION.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t frame_id;
|
||||
} ts_session_subscriber_on_frame_ack_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_RESIZE.
|
||||
// SUBSCRIBER => SESSION.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
} ts_session_subscriber_on_resize_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_PAUSED_CHANGED.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t paused; // 0 or 1.
|
||||
} ts_session_subscriber_on_paused_changed_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_BUFFER_SINGLE.
|
||||
// Contains a single frame buffer. The header is of format |ts_session_subscriber_single_frame_buffer_header_t|.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t buffer_ptr; // buffer pointer, in general the memory address of the buffer in the client lib process.
|
||||
uint32_t buffer_length;
|
||||
ts_session_subscriber_buffer_location_t buffer_location;
|
||||
ts_session_subscriber_buffer_type_t buffer_type;
|
||||
} ts_session_subscriber_on_buffer_single_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_BUFFER_FRONT_BACK.
|
||||
// Contains a main buffer and a sub buffer. The main buffer header
|
||||
// contains metadata about the current front/back buffer and
|
||||
// is of type |ts_session_subscriber_main_buffer_header_t|.
|
||||
// The sub buffer's header is of type |ts_session_subscriber_sub_buffer_header_t|.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t main_buffer_ptr; // main buffer pointer, in general the memory address of the buffer in the client lib process.
|
||||
uint32_t main_buffer_length;
|
||||
uint64_t sub_buffer_ptr; // sub buffer pointer, in general the memory address of the buffer in the client lib process.
|
||||
uint32_t sub_buffer_length;
|
||||
ts_session_subscriber_buffer_location_t buffer_location;
|
||||
} ts_session_subscriber_on_buffer_front_back_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ADD_SUBSCRIBER.
|
||||
// SUBSCRIBER => SESSION.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t request_id;
|
||||
} ts_session_subscriber_add_subscriber_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ADD_SUBSCRIBER_RESP.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t request_id;
|
||||
} ts_session_subscriber_add_subscriber_resp_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_RELEASE_BUFFER.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t buffer_ptr; // buffer pointer, in general the memory address of the buffer in the client lib process.
|
||||
} ts_session_subscriber_on_release_buffer_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_AUDIO_FRAMES.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint64_t buffer_ptr;
|
||||
int bits_per_sample;
|
||||
int sample_rate;
|
||||
uint32_t number_of_channels;
|
||||
uint32_t number_of_frames;
|
||||
int64_t absolute_capture_timestamp_ms;
|
||||
float volume;
|
||||
} ts_session_subscriber_on_audio_frames_payload_t;
|
||||
|
||||
// Payload for TS_SESSION_SUBSCRIBER_CMD_ON_AUDIO_ENABLED_CHANGED.
|
||||
// SESSION => SUBSCRIBER.
|
||||
typedef struct
|
||||
{
|
||||
uint32_t audio_enabled;
|
||||
} ts_session_subscriber_on_audio_enabled_changed_payload_t;
|
||||
|
||||
// Overall Command structure.
|
||||
typedef struct
|
||||
{
|
||||
ts_session_subscriber_command_header_t header;
|
||||
union
|
||||
{
|
||||
ts_session_subscriber_on_frame_payload_t frame;
|
||||
ts_session_subscriber_on_resize_payload_t resize;
|
||||
ts_session_subscriber_on_paused_changed_payload_t paused;
|
||||
ts_session_subscriber_on_frame_ack_payload_t frame_ack;
|
||||
ts_session_subscriber_on_buffer_single_payload_t buffer_single;
|
||||
ts_session_subscriber_on_buffer_front_back_payload_t buffer_front_back;
|
||||
ts_session_subscriber_on_release_buffer_payload_t release_buffer;
|
||||
ts_session_subscriber_add_subscriber_payload_t add_subscriber;
|
||||
ts_session_subscriber_add_subscriber_resp_payload_t add_subscriber_resp;
|
||||
ts_session_subscriber_on_audio_frames_payload_t audio_frames;
|
||||
ts_session_subscriber_on_audio_enabled_changed_payload_t audio_enabled_changed;
|
||||
} payload;
|
||||
} ts_session_subscriber_command_t;
|
||||
|
||||
#if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // TS_SESSION_SUBSCRIBER_PROTOCOL_H_
|
||||
Reference in New Issue
Block a user