summaryrefslogtreecommitdiff
path: root/src/libsystemd/GVARIANT-SERIALIZATION
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-01-21 14:10:18 +0100
committerTom Gundersen <teg@jklm.no>2014-01-21 14:41:35 +0100
commit607553f9306286fdccf0b356bc3d1087adfe21c4 (patch)
treeeedb987304b96ecaf22348c372a93d6ac5fbf594 /src/libsystemd/GVARIANT-SERIALIZATION
parent43d9c2b5848b1363b659c38443c1c94db57415fd (diff)
libsystemd: split up into subdirs
We still only produce on .so, but let's keep the sources separate to make things a bit less messy.
Diffstat (limited to 'src/libsystemd/GVARIANT-SERIALIZATION')
-rw-r--r--src/libsystemd/GVARIANT-SERIALIZATION63
1 files changed, 0 insertions, 63 deletions
diff --git a/src/libsystemd/GVARIANT-SERIALIZATION b/src/libsystemd/GVARIANT-SERIALIZATION
deleted file mode 100644
index 5dffc25bb3..0000000000
--- a/src/libsystemd/GVARIANT-SERIALIZATION
+++ /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.