Generic message format:
uint message_len -- Length of the message (including the message code)
uint message_code -- Message code
Message specific data
Data types, primitive:
bool -- 8bit character (0 == false, not 0 == true)
uint -- 32bit unsigned little endian ordered integer
off_t -- 64bit signed little endian ordered integer
string -- the length of the string (as an uint) + character data
(all strings are UTF8)
Data types, complex:
userdata -- statistics about a user
uint status -- user's status
uint avgspeed -- user's average upload speed
uint downloadnum -- (unknown)
uint files -- number of files a user has shared
uint dirs -- number of dirs a user has shared
bool slotsfull -- wether or not the user has an upload slot available
transfer -- information about a transfer
bool is_upload -- Is this an upload or a download?
string user -- The user associated with this transfer
string path -- The original path to the transfer
uint place -- Place in queue or (uint)-1 if unknown (only valid for downloads)
uint state -- The transfer's state
00: Finished
01: Transferring
02: Negotiating
03: Waiting
04: Establishing
05: Initiating
06: Connecting
07: Queued
08: Getting address
09: Getting status
10: Awaiting user
11: Connection closed
12: Cannot connect
13: Aborted
14: Error
string error -- If the transfer's in error state, this contains the error
off_t position -- How far has the transfer proceded
off_t size -- Total size of this transfer
uint rate -- How fast the transfer is proceding
fileentry -- information about a shared file
off_t filesize -- the file's size
string ext -- the file's extended attribute format
(only 'mp3' or an empty string are supported)
uint numattrs -- number of extended attributes
*repeat numattrs*
uint attr -- an attribute
The 'mp3' extended attribute format holds 3 attributes:
uint bitrate -- the bitrate of the file
uint length -- duration of the file in seconds
uint vbr -- wether the mp3 has a variable bitrate or not
folder -- information about a shared folder
uint numfiles -- how many files the folder contains
*repeat numfiles*
string file -- the filename or full path (depends on context)
fileentry info -- the file's information
shares -- information about a user's shares
uint numfolders -- how many folders there are
*repeat numfolders*
string folder -- the folder's path
folder files -- the files contained in this folder (filenames are relative)
cipher -- AES (aka Rijndael) encrypted string
Configuration strings are sent over the communication layer encrypted
as they may contain sensitive information. The keyphrase of the AES cipher
equals the password used to log in. This complex data type start with the
length of the unencrypted string (n), followed by the encrypted string
data. Crucial note: The amount of encrypted characters sent is n rounded
up to the nearest 16 byte block size. For exmaple: if the original string
was 6 characters long, n will be 6 but is following by 16 characters of data.
Message types:
(Red blocks indicate general
information about the message: the message code, the message's name, and a
short description. Green blocks
specify the message-specific data sent by the interface to the Museek daemon.
Blue blocks specify the
message-specific data sent by the Museek daemon to the interface.)
@BODY@