The UMessage structure is capable of storing the informations contained in any kind of URBI message by using a "getType" function and an UValue (union of classes). These two classes are defined as follows:

package liburbi.main;

public enum UMessageType {
  MESSAGE_SYSTEM, /// System message
  MESSAGE_ERROR,  /// Error message
  MESSAGE_DATA;   /// Message containing data in the UValue

public class UMessage {

  /// Server-side timestamp.
  public int getTimestamp();

  /// Associated tag.
  public String getTag();

  /// Type of the UValue contained in the UMessage
  public UMessageType getType();

  /// UValue contained in the UMessage
  public UValue getValue();

  public String getMessage();

  /// Raw message without the binary data.
  public String getRawMessage();

  /// Client from which originated the message.
  public UAbstractClient getClient();

The type field UMessageType can be MESSAGE_SYSTEM, MESSAGE_ERROR or MESSAGE_DATA. If the type is MESSAGE_DATA, the message contains an UValue.