Class Message

  • Direct Known Subclasses:
    DBusSignal, Error, MethodCall, MethodReturn

    public class Message
    extends java.lang.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  Message.ArgumentType
      Defines constants for each argument type.
      static interface  Message.Endian
      Defines constants representing the endianness of the message.
      static interface  Message.Flags
      Defines constants representing the flags which can be set on a message.
      static interface  Message.HeaderField
      Defines constants for each valid header field type.
      static interface  Message.MessageType
      Defines constants for each message type.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected long bytecounter  
      protected byte flags  
      protected static long globalserial  
      protected java.util.Map<java.lang.Byte,​java.lang.Object> headers  
      static byte PROTOCOL
      The current protocol major version.
      protected byte protover  
      protected long serial  
      protected byte type  
      protected byte[][] wiredata  
    • Constructor Summary

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

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int align​(int current, byte type)
      Align a counter to the given type.
      void append​(java.lang.String sig, java.lang.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.
      java.lang.Object[] extract​(java.lang.String sig, byte[] buf, int ofs)
      Demarshall values from a buffer.
      java.lang.Object[] extract​(java.lang.String sig, byte[] buf, int[] ofs)
      Demarshall values from a buffer.
      static int getAlignment​(byte type)
      Return the alignment for a given type.
      java.lang.String getDestination()
      Returns the destination of the message.
      int getFlags()
      Returns the message flags.
      java.lang.Object getHeader​(byte type)
      Returns the value of the header field of a given field.
      static java.lang.String getHeaderFieldName​(byte field)
      Returns the name of the given header field.
      java.lang.String getInterface()
      Returns the interface of the message.
      java.lang.String getName()
      Returns the member name or error name this message represents.
      java.lang.Object[] getParameters()
      Parses and returns the parameters to this message as an Object array.
      java.lang.String getPath()
      Returns the object path of the message.
      long getReplySerial()
      If this is a reply to a message, this returns its serial.
      long getSerial()
      Returns the message serial ID (unique for this connection)
      java.lang.String getSig()
      Returns the dbus signature of the parameters.
      java.lang.String getSource()
      Returns the Bus ID that sent the message.
      byte[][] getWireData()  
      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​(java.lang.Object[] args)  
      void setSource​(java.lang.String source)
      Warning, do not use this method unless you really know what you are doing.
      java.lang.String toString()
      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 Detail

      • PROTOCOL

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

        protected byte[][] wiredata
      • bytecounter

        protected long bytecounter
      • headers

        protected java.util.Map<java.lang.Byte,​java.lang.Object> headers
      • globalserial

        protected static long globalserial
      • serial

        protected long serial
      • type

        protected byte type
      • flags

        protected byte flags
      • protover

        protected byte protover
    • Constructor Detail

      • 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 Detail

      • getHeaderFieldName

        public static java.lang.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 java.lang.String toString()
        Formats the message in a human-readable format.
        Overrides:
        toString in class java.lang.Object
      • getHeader

        public java.lang.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​(java.lang.String sig,
                           java.lang.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 java.lang.Object[] extract​(java.lang.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 java.lang.Object[] extract​(java.lang.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 java.lang.String getSource()
        Returns the Bus ID that sent the message.
      • getDestination

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

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

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

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

        public java.lang.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 java.lang.Object[] getParameters()
                                         throws DBusException
        Parses and returns the parameters to this message as an Object array.
        Throws:
        DBusException
      • setArgs

        protected void setArgs​(java.lang.Object[] args)
      • setSource

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