chiark / gitweb /
libsystemd-bus: rename to libsystemd
[elogind.git] / src / libsystemd-bus / GVARIANT-SERIALIZATION
diff --git a/src/libsystemd-bus/GVARIANT-SERIALIZATION b/src/libsystemd-bus/GVARIANT-SERIALIZATION
deleted file mode 100644 (file)
index 5dffc25..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-How we use GVariant for serializing D-Bus messages
---------------------------------------------------
-
-We stay as close to the original dbus1 framing as possible. dbus1 has
-the following framing:
-
-    1. A fixed header of "yyyyuu"
-    2. Additional header fields of "a(yv)"
-    3. Padding with NUL bytes to pad up to next 8byte boundary
-    4. The body
-
-Note that the body is not padded at the end, the complete message
-hence might have a non-aligned size. Reading multiple messages at once
-will hence result in possibly unaligned messages in memory.
-
-The header consists of the following:
-
-    y  Endianness, 'l' or 'B'
-    y  Message Type
-    y  Flags
-    y  Protocol version, '1'
-    u  Length of the body, i.e. the length of part 4 above
-    u  Serial number
-
-    = 12 bytes
-
-When using GVariant we keep the basic structure in place, only
-slightly extend the header, and define protocol version '2'. The new
-header:
-
-    y  Endianness, 'l' or 'B'
-    y  Message Type
-    y  Flags
-    y  Protocol version, '2'
-    u  Length of the body, i.e. the length of part 4 above
-    u  Serial number
-    u  Length of the additional header fields array
-
-    = 16 bytes
-
-This has the nice benefit that the beginning of the additional header
-fields array is aligned to an 8 byte boundary. Also, in dbus1
-marshalling arrays start with a length value of 32bit, which means in
-both dbus1 and gvariant marshallings the size of the header fields
-array will be at the same location between bytes 12 and 16. To
-visualize that:
-
-              0               4               8               12              16
-      Common: | E | T | F | V | Body Length   | Serial        | Fields Length |
-
-       dbus1: |                            ... (as above) ... | Fields array ...
-
-    gvariant: |                            ... (as above) ... | Fields Length | Fields array ...
-
-And that's already it.
-
-Note: on kdbus only native endian messages marshalled in gvariant may
-      be sent. If a client receives a message in non-native endianness
-      or in dbus1 marshalling it shall ignore the message.
-
-Note: The GVariant "MAYBE" type is not supported, so that messages can
-      be fully converted forth and back between dbus1 and gvariant
-      representations.