Class Message

java.lang.Object
org.freedesktop.dbus.Message
Direct Known Subclasses:
DBusSignal, Error, MethodCall, MethodReturn

public class Message extends Object
Superclass of all messages which are sent over the Bus. This class deals with all the marshalling to/from the wire format.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
    Defines constants for each argument type.
    static interface 
    Defines constants representing the endianness of the message.
    static interface 
    Defines constants representing the flags which can be set on a message.
    static interface 
    Defines constants for each valid header field type.
    static interface 
    Defines constants for each message type.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected long
     
    protected byte
     
    protected static long
     
    protected Map<Byte,Object>
     
    static final byte
    The current protocol major version.
    protected byte
     
    protected long
     
    protected byte
     
    protected byte[][]
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Create a blank message.
    protected
    Message(byte endian, byte type, byte flags)
    Create a message; only to be called by sub-classes.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    align(int current, byte type)
    Align a counter to the given type.
    void
    append(String sig, Object... data)
    Append a series of values to the message.
    protected void
    appendByte(byte b)
    Appends a byte to the buffer list.
    protected void
    appendBytes(byte[] buf)
    Appends a buffer to the buffer list.
    void
    appendint(long l, int width)
    Marshalls an integer of a given width and appends it to the message.
    static long
    demarshallint(byte[] buf, int ofs, byte endian, int width)
    Demarshalls an integer of a given width from a buffer.
    long
    demarshallint(byte[] buf, int ofs, int width)
    Demarshalls an integer of a given width from a buffer.
    static long
    demarshallintBig(byte[] buf, int ofs, int width)
    Demarshalls an integer of a given width from a buffer using big-endian format.
    static long
    demarshallintLittle(byte[] buf, int ofs, int width)
    Demarshalls an integer of a given width from a buffer using little-endian format.
    extract(String sig, byte[] buf, int ofs)
    Demarshall values from a buffer.
    extract(String sig, byte[] buf, int[] ofs)
    Demarshall values from a buffer.
    static int
    getAlignment(byte type)
    Return the alignment for a given type.
    Returns the destination of the message.
    int
    Returns the message flags.
    getHeader(byte type)
    Returns the value of the header field of a given field.
    static String
    getHeaderFieldName(byte field)
    Returns the name of the given header field.
    Returns the interface of the message.
    Returns the member name or error name this message represents.
    Parses and returns the parameters to this message as an Object array.
    Returns the object path of the message.
    long
    If this is a reply to a message, this returns its serial.
    long
    Returns the message serial ID (unique for this connection)
    Returns the dbus signature of the parameters.
    Returns the Bus ID that sent the message.
    byte[][]
     
    void
    marshallint(long l, byte[] buf, int ofs, int width)
    Marshalls an integer of a given width into a buffer.
    static void
    marshallintBig(long l, byte[] buf, int ofs, int width)
    Marshalls an integer of a given width into a buffer using big-endian format.
    static void
    marshallintLittle(long l, byte[] buf, int ofs, int width)
    Marshalls an integer of a given width into a buffer using little-endian format.
    void
    pad(byte type)
    Pad the message to the proper alignment for the given type.
    protected void
    setArgs(Object[] args)
     
    void
    setSource(String source)
    Warning, do not use this method unless you really know what you are doing.
    Formats the message in a human-readable format.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • PROTOCOL

      public static final byte PROTOCOL
      The current protocol major version.
      See Also:
    • wiredata

      protected byte[][] wiredata
    • bytecounter

      protected long bytecounter
    • headers

      protected Map<Byte,Object> headers
    • globalserial

      protected static long globalserial
    • serial

      protected long serial
    • type

      protected byte type
    • flags

      protected byte flags
    • protover

      protected byte protover
  • Constructor Details

    • Message

      protected Message(byte endian, byte type, byte flags) throws DBusException
      Create a message; only to be called by sub-classes.
      Parameters:
      endian - The endianness to create the message.
      type - The message type.
      flags - Any message flags.
      Throws:
      DBusException
    • Message

      protected Message()
      Create a blank message. Only to be used when calling populate.
  • Method Details

    • getHeaderFieldName

      public static String getHeaderFieldName(byte field)
      Returns the name of the given header field.
    • appendBytes

      protected void appendBytes(byte[] buf)
      Appends a buffer to the buffer list.
    • appendByte

      protected void appendByte(byte b)
      Appends a byte to the buffer list.
    • demarshallint

      public long demarshallint(byte[] buf, int ofs, int width)
      Demarshalls an integer of a given width from a buffer. Endianness is determined from the format of the message.
      Parameters:
      buf - The buffer to demarshall from.
      ofs - The offset to demarshall from.
      width - The byte-width of the int.
    • demarshallint

      public static long demarshallint(byte[] buf, int ofs, byte endian, int width)
      Demarshalls an integer of a given width from a buffer.
      Parameters:
      buf - The buffer to demarshall from.
      ofs - The offset to demarshall from.
      endian - The endianness to use in demarshalling.
      width - The byte-width of the int.
    • demarshallintBig

      public static long demarshallintBig(byte[] buf, int ofs, int width)
      Demarshalls an integer of a given width from a buffer using big-endian format.
      Parameters:
      buf - The buffer to demarshall from.
      ofs - The offset to demarshall from.
      width - The byte-width of the int.
    • demarshallintLittle

      public static long demarshallintLittle(byte[] buf, int ofs, int width)
      Demarshalls an integer of a given width from a buffer using little-endian format.
      Parameters:
      buf - The buffer to demarshall from.
      ofs - The offset to demarshall from.
      width - The byte-width of the int.
    • appendint

      public void appendint(long l, int width)
      Marshalls an integer of a given width and appends it to the message. Endianness is determined from the message.
      Parameters:
      l - The integer to marshall.
      width - The byte-width of the int.
    • marshallint

      public void marshallint(long l, byte[] buf, int ofs, int width)
      Marshalls an integer of a given width into a buffer. Endianness is determined from the message.
      Parameters:
      l - The integer to marshall.
      buf - The buffer to marshall to.
      ofs - The offset to marshall to.
      width - The byte-width of the int.
    • marshallintBig

      public static void marshallintBig(long l, byte[] buf, int ofs, int width)
      Marshalls an integer of a given width into a buffer using big-endian format.
      Parameters:
      l - The integer to marshall.
      buf - The buffer to marshall to.
      ofs - The offset to marshall to.
      width - The byte-width of the int.
    • marshallintLittle

      public static void marshallintLittle(long l, byte[] buf, int ofs, int width)
      Marshalls an integer of a given width into a buffer using little-endian format.
      Parameters:
      l - The integer to marshall.
      buf - The buffer to demarshall to.
      ofs - The offset to demarshall to.
      width - The byte-width of the int.
    • getWireData

      public byte[][] getWireData()
    • toString

      public String toString()
      Formats the message in a human-readable format.
      Overrides:
      toString in class Object
    • getHeader

      public Object getHeader(byte type)
      Returns the value of the header field of a given field.
      Parameters:
      type - The field to return.
      Returns:
      The value of the field or null if unset.
    • pad

      public void pad(byte type)
      Pad the message to the proper alignment for the given type.
    • getAlignment

      public static int getAlignment(byte type)
      Return the alignment for a given type.
    • append

      public void append(String sig, Object... data) throws DBusException
      Append a series of values to the message.
      Parameters:
      sig - The signature(s) of the value(s).
      data - The value(s).
      Throws:
      DBusException
    • align

      public int align(int current, byte type)
      Align a counter to the given type.
      Parameters:
      current - The current counter.
      type - The type to align to.
      Returns:
      The new, aligned, counter.
    • extract

      public Object[] extract(String sig, byte[] buf, int ofs) throws DBusException
      Demarshall values from a buffer.
      Parameters:
      sig - The D-Bus signature(s) of the value(s).
      buf - The buffer to demarshall from.
      ofs - The offset into the data buffer to start.
      Returns:
      The demarshalled value(s).
      Throws:
      DBusException
    • extract

      public Object[] extract(String sig, byte[] buf, int[] ofs) throws DBusException
      Demarshall values from a buffer.
      Parameters:
      sig - The D-Bus signature(s) of the value(s).
      buf - The buffer to demarshall from.
      ofs - An array of two ints, the offset into the signature and the offset into the data buffer. These values will be updated to the start of the next value ofter demarshalling.
      Returns:
      The demarshalled value(s).
      Throws:
      DBusException
    • getSource

      public String getSource()
      Returns the Bus ID that sent the message.
    • getDestination

      public String getDestination()
      Returns the destination of the message.
    • getInterface

      public String getInterface()
      Returns the interface of the message.
    • getPath

      public String getPath()
      Returns the object path of the message.
    • getName

      public String getName()
      Returns the member name or error name this message represents.
    • getSig

      public String getSig()
      Returns the dbus signature of the parameters.
    • getFlags

      public int getFlags()
      Returns the message flags.
    • getSerial

      public long getSerial()
      Returns the message serial ID (unique for this connection)
      Returns:
      the message serial.
    • getReplySerial

      public long getReplySerial()
      If this is a reply to a message, this returns its serial.
      Returns:
      The reply serial, or 0 if it is not a reply.
    • getParameters

      public Object[] getParameters() throws DBusException
      Parses and returns the parameters to this message as an Object array.
      Throws:
      DBusException
    • setArgs

      protected void setArgs(Object[] args)
    • setSource

      public void setSource(String source) throws DBusException
      Warning, do not use this method unless you really know what you are doing.
      Throws:
      DBusException