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.ObjectSuperclass 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 interfaceMessage.ArgumentTypeDefines constants for each argument type.static interfaceMessage.EndianDefines constants representing the endianness of the message.static interfaceMessage.FlagsDefines constants representing the flags which can be set on a message.static interfaceMessage.HeaderFieldDefines constants for each valid header field type.static interfaceMessage.MessageTypeDefines constants for each message type.
-
Field Summary
Fields Modifier and Type Field Description protected longbytecounterprotected byteflagsprotected static longglobalserialprotected java.util.Map<java.lang.Byte,java.lang.Object>headersstatic bytePROTOCOLThe current protocol major version.protected byteprotoverprotected longserialprotected bytetypeprotected byte[][]wiredata
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intalign(int current, byte type)Align a counter to the given type.voidappend(java.lang.String sig, java.lang.Object... data)Append a series of values to the message.protected voidappendByte(byte b)Appends a byte to the buffer list.protected voidappendBytes(byte[] buf)Appends a buffer to the buffer list.voidappendint(long l, int width)Marshalls an integer of a given width and appends it to the message.static longdemarshallint(byte[] buf, int ofs, byte endian, int width)Demarshalls an integer of a given width from a buffer.longdemarshallint(byte[] buf, int ofs, int width)Demarshalls an integer of a given width from a buffer.static longdemarshallintBig(byte[] buf, int ofs, int width)Demarshalls an integer of a given width from a buffer using big-endian format.static longdemarshallintLittle(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 intgetAlignment(byte type)Return the alignment for a given type.java.lang.StringgetDestination()Returns the destination of the message.intgetFlags()Returns the message flags.java.lang.ObjectgetHeader(byte type)Returns the value of the header field of a given field.static java.lang.StringgetHeaderFieldName(byte field)Returns the name of the given header field.java.lang.StringgetInterface()Returns the interface of the message.java.lang.StringgetName()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.StringgetPath()Returns the object path of the message.longgetReplySerial()If this is a reply to a message, this returns its serial.longgetSerial()Returns the message serial ID (unique for this connection)java.lang.StringgetSig()Returns the dbus signature of the parameters.java.lang.StringgetSource()Returns the Bus ID that sent the message.byte[][]getWireData()voidmarshallint(long l, byte[] buf, int ofs, int width)Marshalls an integer of a given width into a buffer.static voidmarshallintBig(long l, byte[] buf, int ofs, int width)Marshalls an integer of a given width into a buffer using big-endian format.static voidmarshallintLittle(long l, byte[] buf, int ofs, int width)Marshalls an integer of a given width into a buffer using little-endian format.voidpad(byte type)Pad the message to the proper alignment for the given type.protected voidsetArgs(java.lang.Object[] args)voidsetSource(java.lang.String source)Warning, do not use this method unless you really know what you are doing.java.lang.StringtoString()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 DBusExceptionCreate 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:
toStringin 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 DBusExceptionAppend 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 DBusExceptionDemarshall 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 DBusExceptionDemarshall 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 DBusExceptionParses 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 DBusExceptionWarning, do not use this method unless you really know what you are doing.- Throws:
DBusException
-
-