2003-09-21 Mark McLoughlin <mark@skynet.ie>

* doc/dbus-specification.sgml: Change the header field name
        to be an enum and update the rest of the spec to reference
        the fields using the conventinal name.

        * dbus/dbus-protocol.h: update to reflect the spec.

        * doc/TODO: add item to remove the 4 byte alignment requirement.

        * dbus/dbus-message.c: Remove the code to generalise the
        header/body length and serial number header fields as named
        header fields so we can reference field names using the
        protocol values.
        (append_int_field), (append_uint_field), (append_string_field):
        Append the field name as a byte rather than four chars.
        (delete_int_or_uint_field), (delete_string_field): reflect the
        fact that the field name and typecode now occupy 4 bytes instead
        of 8.
        (decode_string_field), (decode_header_data): update to reflect
        protocol changes and move the field specific encoding from
        decode_string_field() back into decode_header_data().

        * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
        Add utility to aid debugging.

        * dbus/dbus-message-builder.c:
        (append_string_field), (_dbus_message_data_load): Update to
        reflect protocol changes; Change the FIELD_NAME directive
        to HEADER_FIELD and allow it to take the field's conventional
        name rather than the actual value.

        * test/data/*/*.message: Update to use HEADER_FIELD instead
        of FIELD_NAME; Always align the header on an 8 byte boundary
        *before* updating the header length.
This commit is contained in:
Mark McLoughlin 2003-09-21 18:43:20 +00:00
parent fafc38bb45
commit daf8d6579e
35 changed files with 460 additions and 417 deletions

View file

@ -1,3 +1,39 @@
2003-09-21 Mark McLoughlin <mark@skynet.ie>
* doc/dbus-specification.sgml: Change the header field name
to be an enum and update the rest of the spec to reference
the fields using the conventinal name.
* dbus/dbus-protocol.h: update to reflect the spec.
* doc/TODO: add item to remove the 4 byte alignment requirement.
* dbus/dbus-message.c: Remove the code to generalise the
header/body length and serial number header fields as named
header fields so we can reference field names using the
protocol values.
(append_int_field), (append_uint_field), (append_string_field):
Append the field name as a byte rather than four chars.
(delete_int_or_uint_field), (delete_string_field): reflect the
fact that the field name and typecode now occupy 4 bytes instead
of 8.
(decode_string_field), (decode_header_data): update to reflect
protocol changes and move the field specific encoding from
decode_string_field() back into decode_header_data().
* dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
Add utility to aid debugging.
* dbus/dbus-message-builder.c:
(append_string_field), (_dbus_message_data_load): Update to
reflect protocol changes; Change the FIELD_NAME directive
to HEADER_FIELD and allow it to take the field's conventional
name rather than the actual value.
* test/data/*/*.message: Update to use HEADER_FIELD instead
of FIELD_NAME; Always align the header on an 8 byte boundary
*before* updating the header length.
2003-09-15 Havoc Pennington <hp@pobox.com>
* dbus/dbus-pending-call.c: add the get/set object data

View file

@ -389,6 +389,38 @@ _dbus_type_to_string (int type)
}
}
/**
* Returns a string describing the given name.
*
* @param header_field the field to describe
* @returns a constant string describing the field
*/
const char *
_dbus_header_field_to_string (int header_field)
{
switch (header_field)
{
case DBUS_HEADER_FIELD_INVALID:
return "invalid";
case DBUS_HEADER_FIELD_PATH:
return "path";
case DBUS_HEADER_FIELD_INTERFACE:
return "interface";
case DBUS_HEADER_FIELD_MEMBER:
return "member";
case DBUS_HEADER_FIELD_ERROR_NAME:
return "error-name";
case DBUS_HEADER_FIELD_REPLY_SERIAL:
return "reply-serial";
case DBUS_HEADER_FIELD_SERVICE:
return "service";
case DBUS_HEADER_FIELD_SENDER_SERVICE:
return "sender-service";
default:
return "unknown";
}
}
#ifndef DBUS_DISABLE_CHECKS
/** String used in _dbus_return_if_fail macro */
const char _dbus_return_if_fail_warning_format[] =

View file

@ -184,7 +184,8 @@ void _dbus_verbose_bytes_of_string (const DBusString *str,
int len);
const char* _dbus_type_to_string (int type);
const char* _dbus_type_to_string (int type);
const char* _dbus_header_field_to_string (int header_field);
extern const char _dbus_no_memory_message[];
#define _DBUS_SET_OOM(error) dbus_set_error ((error), DBUS_ERROR_NO_MEMORY, _dbus_no_memory_message)

View file

@ -294,7 +294,7 @@ message_type_from_string (const DBusString *str,
static dbus_bool_t
append_string_field (DBusString *dest,
int endian,
const char *field_name,
int field,
int type,
const char *value)
{
@ -306,9 +306,9 @@ append_string_field (DBusString *dest,
return FALSE;
}
if (!_dbus_string_append (dest, field_name))
if (!_dbus_string_append_byte (dest, field))
{
_dbus_warn ("couldn't append field name\n");
_dbus_warn ("couldn't append field name byte\n");
return FALSE;
}
@ -363,7 +363,7 @@ append_string_field (DBusString *dest,
* (or if no START_LENGTH, absolute length)
* LENGTH <name> inserts the saved length of the same name
* CHOP <N> chops last N bytes off the data
* FIELD_NAME <abcd> inserts 4-byte field name
* HEADER_FIELD <fieldname> inserts a header field name byte
* TYPE <typename> inserts a typecode byte
* @endcode
*
@ -679,14 +679,34 @@ _dbus_message_data_load (DBusString *dest,
PERFORM_UNALIGN (dest);
}
else if (_dbus_string_starts_with_c_str (&line,
"FIELD_NAME"))
"HEADER_FIELD"))
{
int field;
_dbus_string_delete_first_word (&line);
if (_dbus_string_get_length (&line) != 4)
if (_dbus_string_starts_with_c_str (&line, "INVALID"))
field = DBUS_HEADER_FIELD_INVALID;
else if (_dbus_string_starts_with_c_str (&line, "PATH"))
field = DBUS_HEADER_FIELD_PATH;
else if (_dbus_string_starts_with_c_str (&line, "INTERFACE"))
field = DBUS_HEADER_FIELD_INTERFACE;
else if (_dbus_string_starts_with_c_str (&line, "MEMBER"))
field = DBUS_HEADER_FIELD_MEMBER;
else if (_dbus_string_starts_with_c_str (&line, "ERROR_NAME"))
field = DBUS_HEADER_FIELD_ERROR_NAME;
else if (_dbus_string_starts_with_c_str (&line, "REPLY_SERIAL"))
field = DBUS_HEADER_FIELD_REPLY_SERIAL;
else if (_dbus_string_starts_with_c_str (&line, "SERVICE"))
field = DBUS_HEADER_FIELD_SERVICE;
else if (_dbus_string_starts_with_c_str (&line, "SENDER_SERVICE"))
field = DBUS_HEADER_FIELD_SENDER_SERVICE;
else if (_dbus_string_starts_with_c_str (&line, "UNKNOWN"))
field = 22; /* random unknown header field */
else
{
_dbus_warn ("Field name must be four characters not \"%s\"\n",
_dbus_string_get_const_data (&line));
_dbus_warn ("%s is not a valid header field name\n",
_dbus_string_get_const_data (&line));
goto parse_failed;
}
@ -694,10 +714,12 @@ _dbus_message_data_load (DBusString *dest,
unalign = FALSE;
else
_dbus_string_align_length (dest, 4);
if (!_dbus_string_copy (&line, 0, dest,
_dbus_string_get_length (dest)))
goto parse_failed;
if (!_dbus_string_append_byte (dest, field))
{
_dbus_warn ("could not append header field name byte\n");
goto parse_failed;
}
}
else if (_dbus_string_starts_with_c_str (&line,
"TYPE"))

File diff suppressed because it is too large Load diff

View file

@ -71,14 +71,17 @@ extern "C" {
#define DBUS_HEADER_FLAG_NO_REPLY_EXPECTED 0x1
/* Header fields */
#define DBUS_HEADER_FIELD_PATH "path"
#define DBUS_HEADER_FIELD_INTERFACE "ifce"
#define DBUS_HEADER_FIELD_MEMBER "mebr"
#define DBUS_HEADER_FIELD_ERROR_NAME "ernm"
#define DBUS_HEADER_FIELD_SERVICE "srvc"
#define DBUS_HEADER_FIELD_REPLY "rply"
#define DBUS_HEADER_FIELD_SENDER_SERVICE "sdrs"
#define DBUS_HEADER_FIELD_INVALID 0
#define DBUS_HEADER_FIELD_PATH 1
#define DBUS_HEADER_FIELD_INTERFACE 2
#define DBUS_HEADER_FIELD_MEMBER 3
#define DBUS_HEADER_FIELD_ERROR_NAME 4
#define DBUS_HEADER_FIELD_REPLY_SERIAL 5
#define DBUS_HEADER_FIELD_SERVICE 6
#define DBUS_HEADER_FIELD_SENDER_SERVICE 7
#define DBUS_HEADER_FIELD_LAST DBUS_HEADER_FIELD_SENDER_SERVICE
/* Services */
#define DBUS_SERVICE_ORG_FREEDESKTOP_DBUS "org.freedesktop.DBus"
#define DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST "org.freedesktop.Broadcast"

View file

@ -86,3 +86,6 @@
- I don't want to introduce DBusObject, but refcounting and object
data could still be factored out into an internal "base class"
perhaps.
- Header fields names are required to be aligned on a 4 byte boundary
at the moment. No alignment should be neccessary.

View file

@ -257,22 +257,22 @@
In addition to the required header information mentioned
in <xref linkend="message-protocol-header-encoding">,
the header may contain zero or more named
header fields. These fields are named to allow
future versions of this protocol specification to
add new fields; implementations must ignore fields
they do not understand. Implementations must not
invent their own header fields; only changes to
header fields. Future versions of this protocol
specification may add new fields. Implementations must
ignore fields they do not understand. Implementations
must not invent their own header fields; only changes to
this specification may introduce new header fields.
</para>
<para>
Header field names MUST consist of 4 non-nul bytes. The field name is
NOT nul terminated; it occupies exactly 4 bytes. Following the name, the
field MUST have a type code represented as a single unsigned byte, and
then a properly-aligned value of that type. See <xref
linkend="message-protocol-arguments"> for a description of how each type
is encoded. If an implementation sees a header field name that it does
not understand, it MUST ignore that field.
Header fields MUST be aligned to a 4-byte boundary. Header field
names MUST consist of a single byte, possible values of which are
defined below. Following the name, the field MUST have a type code
represented as a single unsigned byte, and then a properly-aligned
value of that type. See <xref
linkend="message-protocol-arguments"> for a description of how each
type is encoded. If an implementation sees a header field name that
it does not understand, it MUST ignore that field.
</para>
<para>
@ -281,51 +281,65 @@
<tgroup cols=3>
<thead>
<row>
<entry>Name</entry>
<entry>Conventional Name</entry>
<entry>Decimal Value</entry>
<entry>Type</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>path</entry>
<entry>INVALID</entry>
<entry>0</entry>
<entry>INVALID</entry>
<entry>Not a valid field name (error if it appears in a message)</entry>
</row>
<row>
<entry>PATH</entry>
<entry>1</entry>
<entry>STRING</entry>
<entry>The object to send the message to; objects are identified by
a path, "/foo/bar"</entry>
</row>
<row>
<entry>ifce</entry>
<entry>INTERFACE</entry>
<entry>2</entry>
<entry>STRING</entry>
<entry>The interface to invoke a method call on, or
that a signal is emitted from. e.g. "org.freedesktop.Introspectable"</entry>
</row>
<row>
<entry>mebr</entry>
<entry>MEMBER</entry>
<entry>3</entry>
<entry>STRING</entry>
<entry>The member, either the method name or signal name.
e.g. "Frobate"</entry>
</row>
<row>
<entry>ernm</entry>
<entry>ERROR_NAME</entry>
<entry>4</entry>
<entry>STRING</entry>
<entry>The name of the error that occurred, for errors</entry>
</row>
<row>
<entry>rply</entry>
<entry>REPLY_SERIAL</entry>
<entry>5</entry>
<entry>UINT32</entry>
<entry>The serial number of the message this message is a reply
to. (The serial number is one of the mandatory header fields,
see <xref linkend="message-protocol-header-encoding">.)</entry>
</row>
<row>
<entry>srvc</entry>
<entry>SERVICE</entry>
<entry>6</entry>
<entry>STRING</entry>
<entry>The name of the service this message should be routed to.
Only used in combination with the message bus, see
<xref linkend="message-bus">.</entry>
</row>
<row>
<entry>sdrs</entry>
<entry>SENDER_SERVICE</entry>
<entry>7</entry>
<entry>STRING</entry>
<entry>Sender service. The name of the base service that sent
this message. The message bus fills in this field; the field is
@ -595,24 +609,24 @@
messages map naturally to methods on objects in a typical program.
</para>
<para>
A method call message is expected to have a 'mebr' header field
A method call message is expected to have a MEMBER header field
indicating the name of the method. Optionally, the message has an
'ifce' field giving the interface the method is a part of. In the
absence of an 'ifce' field, if two interfaces on the same object have
INTERFACE field giving the interface the method is a part of. In the
absence of an INTERFACE field, if two interfaces on the same object have
a method with the same name, it is undefined which of the two methods
will be invoked. Implementations may also choose to return an error in
this ambiguous case. However, if a method name is unique
implementations should not require an interface field.
</para>
<para>
Method call messages also include a 'path' field indicating the
Method call messages also include a PATH field indicating the
object to invoke the method on. If the call is passing through
a message bus, the message will also have a 'srvc' field giving
a message bus, the message will also have a SERVICE field giving
the service to receive the message.
</para>
<para>
When an application handles a method call message, it is expected to
return a reply. The reply is identified by a 'rply' header field
return a reply. The reply is identified by a REPLY_SERIAL header field
indicating the serial number of the METHOD_CALL being replied to. The
reply can have one of two types; either METHOD_RETURN or ERROR.
</para>
@ -673,9 +687,9 @@
<para>
Unlike method calls, signal emissions have no replies.
A signal emission is simply a single message of type SIGNAL.
It must have three header fields: 'path' giving the object
the signal was emitted from, plus 'ifce' and 'mebr' giving the
fully-qualified name of the signal.
It must have three header fields: PATH giving the object
the signal was emitted from, plus INTERFACE and MEMBER giving
the fully-qualified name of the signal.
</para>
</sect3>
@ -688,9 +702,9 @@
org.freedesktop.DBus.ActivateService (in STRING service_name, in UINT32 flags,
out UINT32 resultcode)
</programlisting>
This means ifce = org.freedesktop.DBus, mebr = ActivateService,
This means INTERFACE = org.freedesktop.DBus, MEMBER = ActivateService,
METHOD_CALL arguments are STRING and UINT32, METHOD_RETURN argument
is UINT32. Remember that the 'mebr' field can't contain any '.' (period)
is UINT32. Remember that the MEMBER field can't contain any '.' (period)
characters so it's known that the last part of the name in
the "IDL" is the member name.
</para>
@ -1270,18 +1284,18 @@
the new owner of the service.
</para>
<para>
Messages may have a <literal>srvc</literal> field (see <xref
Messages may have a <literal>SERVICE</literal> field (see <xref
linkend="message-protocol-header-fields">). When the message bus
receives a message, if the <literal>srvc</literal> field is absent, the
receives a message, if the <literal>SERVICE</literal> field is absent, the
message is taken to be a standard peer-to-peer message and interpreted
by the message bus itself. For example, sending
an <literal>org.freedesktop.Peer.Ping</literal> message with no
<literal>srvc</literal> will cause the message bus itself to reply
<literal>SERVICE</literal> will cause the message bus itself to reply
to the ping immediately; the message bus would never make
this message visible to other applications.
</para>
<para>
If the <literal>srvc</literal> field is present, then it indicates a
If the <literal>SERVICE</literal> field is present, then it indicates a
request for the message bus to route the message. In the usual case,
messages are routed to the owner of the named service.
Messages may also be <firstterm>broadcast</firstterm>
@ -1292,7 +1306,7 @@
</para>
<para>
Continuing the <literal>org.freedesktop.Peer.Ping</literal> example, if
the ping message were sent with a <literal>srvc</literal> name of
the ping message were sent with a <literal>SERVICE</literal> name of
<literal>com.yoyodyne.Screensaver</literal>, then the ping would be
forwarded, and the Yoyodyne Corporation screensaver application would be
expected to reply to the ping. If

View file

@ -1,14 +1,14 @@
## message that's missing an expected body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
END_LENGTH Header
ALIGN 8
END_LENGTH Header
## create the body, then chop it off
START_LENGTH Body

View file

@ -2,15 +2,16 @@
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE ARRAY
TYPE NIL

View file

@ -3,15 +3,16 @@
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE ARRAY

View file

@ -3,15 +3,16 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE ARRAY
TYPE BOOLEAN

View file

@ -3,15 +3,16 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE BOOLEAN
BYTE 3

View file

@ -8,15 +8,14 @@ BYTE 0
LENGTH Header
LENGTH Body
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
ALIGN 8
END_LENGTH Header
START_LENGTH Body

View file

@ -4,14 +4,15 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Local'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Disconnected'
ALIGN 8
END_LENGTH Header
START_LENGTH Body
END_LENGTH Body

View file

@ -3,10 +3,10 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'NoDotInHere'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'

View file

@ -3,14 +3,14 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8

View file

@ -2,11 +2,11 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.foo.bar.this.is.really.long 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'

View file

@ -3,14 +3,14 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8

View file

@ -3,14 +3,14 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8

View file

@ -3,14 +3,14 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8

View file

@ -2,10 +2,10 @@
VALID_HEADER method_call
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'

View file

@ -2,8 +2,8 @@
VALID_HEADER method_call
REQUIRED_FIELDS
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE ARRAY

View file

@ -2,8 +2,8 @@
VALID_HEADER method_call
REQUIRED_FIELDS
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE DICT
LENGTH Dict

View file

@ -2,8 +2,8 @@
VALID_HEADER method_call
REQUIRED_FIELDS
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE STRING
INT32 0

View file

@ -2,8 +2,8 @@
VALID_HEADER method_call
REQUIRED_FIELDS
END_LENGTH Header
ALIGN 8
END_LENGTH Header
START_LENGTH Body
TYPE NIL
TYPE BYTE

View file

@ -7,7 +7,7 @@ REQUIRED_FIELDS
## this byte array is filled with zeros to the natural length
## of the header
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE ARRAY
TYPE BYTE
ALIGN 4

View file

@ -7,7 +7,7 @@ VALID_HEADER method_call
REQUIRED_FIELDS
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE INT32
INT32 0xfeeb

View file

@ -5,6 +5,7 @@ VALID_HEADER method_call
REQUIRED_FIELDS
ALIGN 8
END_LENGTH Header
START_LENGTH Body

View file

@ -11,13 +11,13 @@ LENGTH Body
## client serial
INT32 7
FIELD_NAME path
HEADER_FIELD PATH
TYPE OBJECT_PATH
OBJECT_PATH '/foo'
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Bar'

View file

@ -1,16 +1,16 @@
# Standard org.freedesktop.DBus.AcquireService message
VALID_HEADER method_call
FIELD_NAME path
HEADER_FIELD PATH
TYPE OBJECT_PATH
OBJECT_PATH '/org/freedesktop/DBus'
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.DBus'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'AcquireService'
FIELD_NAME srvc
HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8

View file

@ -1,16 +1,16 @@
# Standard org.freedesktop.DBus.Hello message
VALID_HEADER method_call
FIELD_NAME path
HEADER_FIELD PATH
TYPE OBJECT_PATH
OBJECT_PATH '/org/freedesktop/DBus'
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.DBus'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'Hello'
FIELD_NAME srvc
HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8

View file

@ -1,16 +1,16 @@
# Standard org.freedesktop.DBus.ListServices message
VALID_HEADER method_call
FIELD_NAME path
HEADER_FIELD PATH
TYPE OBJECT_PATH
OBJECT_PATH '/org/freedesktop/DBus'
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.DBus'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'ListServices'
FIELD_NAME srvc
HEADER_FIELD SERVICES
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8

View file

@ -1,16 +1,16 @@
# Standard org.freedesktop.DBus.ServiceExists message
VALID_HEADER method_call
FIELD_NAME path
HEADER_FIELD PATH
TYPE OBJECT_PATH
OBJECT_PATH '/org/freedesktop/DBus'
FIELD_NAME ifce
HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.DBus'
FIELD_NAME mebr
HEADER_FIELD MEMBER
TYPE STRING
STRING 'ServiceExists'
FIELD_NAME srvc
HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8

View file

@ -3,7 +3,7 @@
## VALID_HEADER includes a LENGTH Header and LENGTH Body
VALID_HEADER method_call
REQUIRED_FIELDS
FIELD_NAME unkn
HEADER_FIELD UNKNOWN
TYPE INT32
INT32 0xfeeb
ALIGN 8