dbus/doc TODO,1.51,1.52

Havoc Pennington hp@freedesktop.org
Fri Jan 14 23:15:40 PST 2005


Update of /cvs/dbus/dbus/doc
In directory gabe:/tmp/cvs-serv28195/doc

Modified Files:
	TODO 
Log Message:
2005-01-15  Havoc Pennington  <hp@redhat.com>

	* Land the new message args API and type system.

	This patch is huge, but the public API change is not 
	really large. The set of D-BUS types has changed somewhat, 
	and the arg "getters" are more geared toward language bindings;
	they don't make a copy, etc.

	There are also some known issues. See these emails for details
	on this huge patch:
	http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
        http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
	
	* dbus/dbus-marshal-*: all the new stuff

	* dbus/dbus-message.c: basically rewritten

	* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
	freed blocks to be all non-nul bytes so using freed memory is less
	likely to work right

	* dbus/dbus-internals.c (_dbus_test_oom_handling): add
	DBUS_FAIL_MALLOC=N environment variable, so you can do
	DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
	DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
	thorough.

	* qt/message.cpp: port to the new message args API
	(operator<<): use str.utf8() rather than str.unicode()
	(pretty sure this is right from the Qt docs?)

	* glib/dbus-gvalue.c: port to the new message args API

	* bus/dispatch.c, bus/driver.c: port to the new message args API

	* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
	"locked" flag to TRUE and align_offset to 0; I guess we never
	looked at these anyhow, but seems cleaner.

	* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
	move allocation padding macro to this header; use it to implement
	(_DBUS_STRING_STATIC): ability to declare a static string.

	* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
	change to return TRUE if the interface is not set.

	* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
	to dbus-marshal-validate.[hc]

	* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
	dbus-internals.c

	* dbus/Makefile.am: cut over from dbus-marshal.[hc]
	to dbus-marshal-*.[hc]

	* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
	function here from dbus-marshal.c



Index: TODO
===================================================================
RCS file: /cvs/dbus/dbus/doc/TODO,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- TODO	1 Jan 2005 20:53:42 -0000	1.51
+++ TODO	15 Jan 2005 07:15:38 -0000	1.52
@@ -15,11 +15,11 @@
    which of these functions to include, in light of the fact that 
    GLib/Qt native stubs will probably also exist.
 
- - the invalid messages in the test suite are all useless because 
-   they are invalid for the wrong reasons due to protocol changes.
-   (Consider extending test suite to validate that they are 
-   invalid for right reason, e.g. an "INVALID_ERROR Foo" line 
-   in the message files)
+ - the "break loader" and valid/invalid message tests are all disabled;
+   they need to be fixed and re-enabled with the new message args stuff.
+   I think I want to drop the .message files thing and just have code
+   that generates messages, more like the tests for
+   dbus-marshal-recursive.c
 
  - modify the auth protocol to also support other initial-handshake
    type of information:
@@ -30,26 +30,6 @@
    since protocol probably modifies the API. But we could have it there
    as a safety net.
 
- - re_align_field_recurse() in dbus-message.c is broken because it 
-   crashes on some types of header field values. security problem.
-
- - modify the wire protocol to keep the args signature separate 
-   from the args themselves. Make the name of TYPE_CUSTOM part 
-   of the type signature, rather than part of the value.
-   Then you have the full typecheck in a single string.
-   See http://freedesktop.org/pipermail/dbus/2004-June/001169.html
-
-   Subnote: STRING_OR_NIL is wrong, doesn't work in C++ etc. ; should
-   not have done that. Use empty string or special string values or separate functions/signals 
-   or whatever instead.
-
-   Subnote: For recursive types, one approach is that "structs" are done as parens, 
-   so e.g. s(ii) is a string and struct { int; int; } etc. Type codes
-   then all have to be done as strings not single ints.
-   We could also put the type signature for the message body in a
-   header field.
-   An "any" type has the type string included in the value.
-
  - need to define bus behavior if you send a message to 
    yourself; is it an error, or allowed? If allowed, 
    we need to have a test for it in the test suite.
@@ -58,9 +38,12 @@
    (though they are kind of a pita to pass in as size_t with the 
     varargs, so maybe not - what does glib do with g_object_get()?)
 
- - it's probably obnoxious that reading/writing bools doesn't return dbus_bool_t; 
-   the only possible solution I think is to change dbus_bool_t to unsigned char, 
-   but that may cause wackiness elsewhere.
+ - it's probably obnoxious that reading/writing bools doesn't return
+   dbus_bool_t; solution is probably to change bool to 32 bits on the
+   wire
+
+ - maybe change and don't align variant bodies to 8-boundary, it uses
+   up lots of space in a typical header
 
  - rename the service thing. unique service names (":1") and well-known
    ("org.foo.bar") should have different names probably; something like 
@@ -68,6 +51,12 @@
    "application id" for the unique and "common name" or "published
    name" for the well-known; not sure yet.
 
+ - things are broken now when mixing endianness, because DBusMessage
+   doesn't autoswap itself when you access a message of alternate
+   endian.
+
+ - add string array support back to append_args()
+
 Important for 1.0 GLib Bindings
 ===
 
@@ -103,6 +92,8 @@
  - connection_open/connection_disconnect lacks symmetry, open/close
    or connect/disconnect
 
+ - protocol version in each message is pretty silly
+
 Can Be Post 1.0
 ===
 



More information about the dbus-commit mailing list