Les types de données

Le type de donnée utilisé par la liburbi est décrite ci-dessous:

UMessage

 class UMessage {
  public:

   UAbstractClient    &client;   // connexion à l'origine du message
   int                timestamp;     // timestamp côté serveur
   char               *tag;          // étiquette associée

   UMessageType       type;          // type du message
   UBinaryMessageType binaryType;    // type du message binaire

   union {
     double        doubleValue;
     char          *stringValue;
     char          *systemValue;
     char          *message;        // rempli si le type est unknown (MESSAGE_UNKNOWN)
     USound        sound;           // rempli si la donnée binaire est sonore
     UImage        image;           // rempli si la donnée binaire est une image
     UBinary       binary;          // rempli si la donnée binaire est de type indéterminé
   };
 }

Le champ type peut être MESSAGE_DOUBLE, MESSAGE_STRING, MESSAGE_SYSTEM, MESSAGE_BINARY ou MESSAGE_UNKNOWN. En fonction de ce champ, la valeur correspondante dans l'union sera remplie. Si le message est binaire, binaryType donnera des informations supplémentaires sur le type de la donnée (BINARYMESSAGE_SOUND, BINARYMESSAGE_IMAGE ou BINARYMESSAGE_UNKNOWN), et la structure appropriée (sound ou image) sera remplie.

USound

 class USound {
  public:
  char                  *data;            // pointeur sur la donnée sonore
  int                   size;             // taille totale, en octets
  int                   channels;         // nombre de canaux audio
  int                   rate;             // fréquence d'échantillonnage, en Hertz
  int                   sampleSize;       // qualité d'échantillonnage, en bits
  USoundFormat          soundFormat;      // format du son
                                             // (SOUND_RAW, SOUND_WAV, SOUND_MP3...)
  USoundSampleFormat    sampleFormat;     // format des échantillons
 };

UImage

 class UImage {
  public:
   char                  *data;            // pointeur sur la donnée graphique
   int                   size;             // poids de l'image, en octets
   int                   width, height;    // taille de l'image
   UImageFormat          imageFormat;      // format de l'image
                                               // (IMAGE_RGB, IMAGE_YCbCr, IMAGE_JPEG...)
 };