Package org.freedesktop.dbus
Class Message
- java.lang.Object
-
- org.freedesktop.dbus.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
-
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.
-
-
-
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 classjava.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
-
-