Commit graph

1047 commits

Author SHA1 Message Date
Colin Walters
2b97fb81a5 2005-02-27 Colin Walters <walters@verbum.org>
* glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
	Change return value to const char * instead of int so we can do
	full signatures.
	(struct PropertyInfo, struct ArgInfo): Store char *.
	(property_info_new, arg_info_new): Update parameters, strdup.
	(property_info_unref, arg_info_unref): Free.

	* glib/dbus-gidl.h: Update prototypes.

	* glib/dbus-gparser.c (basic_type_from_string): Delete.
	(validate_signature): New function, just validates signature and
	sets GError.
	(parse_property, parse_arg): Invoke validate_signature.  Store
	signature instead of just type code.

	* glib/dbus-gvalue.c (base_type_from_signature): New utility
	function to return a primary type for a signature, dropping
	information about types in container types.
	(dbus_gvalue_genmarshal_name_from_type)
	(dbus_gvalue_binding_type_from_type)
	(dbus_gvalue_ctype_from_type): Update to take full signature
	 instead of type code.
	(dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.

	* glib/dbus-gvalue.h: Update prototypes for above.

	* glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
	glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
	(introspect_properties, introspect_signals, write_interface):
	Update to handle signatures, and remove usage of
	_dbus_gutils_type_to_string.
	(handle_introspect): Print out type codes instead of e.g. "string"
	in hardcoded introspection XML; also use x_AS_STRING constants
	instead of hardcoding in string.

	* glib/dbus-glib-tool.c (pretty_print): Handle signature change
	to string.  Remove usage of _dbus_gutils_type_to_string.

	* glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.

	* glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
	deletion.

	* glib/dbus-binding-tool-glib.c (compute_marshaller)
	(compute_marshaller_name, generate_glue): Handle signature change
	to string.
	(write_formal_parameters, write_args_for_direction): Ditto, and
	remove FIXME.

	* tools/dbus-tree-view.c (type_to_string): Delete.
	(info_set_func_text): Update to print full signatures.

	* test/glib/test-service-glib.xml: Change types to new
	introspection format.
2005-02-27 17:38:12 +00:00
Havoc Pennington
ee27481d7b 2005-02-26 Havoc Pennington <hp@redhat.com>
* doc/TODO: remove the "guid" item

	* test/glib/test-profile.c (no_bus_thread_func): use open_private
	(with_bus_thread_func): use open_private

	* dbus/dbus-connection.c (dbus_connection_open_private): new
	function that works like the old dbus_connection_open()
	(dbus_connection_open): now returns an existing connection if
	possible

	* dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
	through the GUID to the transport

	* dbus/dbus-server.c (_dbus_server_init_base): keep around the
	GUID in hex-encoded form.

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	pass GUID argument in to the transport

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
	guid argument

	* dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument

	* dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
2005-02-26 06:37:46 +00:00
Havoc Pennington
7ce7502e1a 2005-02-25 Havoc Pennington <hp@redhat.com>
* doc/dbus-specification.xml: document the GUID thing

	* dbus/dbus-server.c (_dbus_server_init_base): initialize a
	globally unique ID for the server, and put a "guid=hexencoded"
	field in the address

	* dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h

	* dbus/dbus-message.c: ditto

	* dbus/dbus-dataslot.c: ditto

	* dbus/dbus-list.c: ditto

	* dbus/dbus-internals.h: wait, just include
	dbus-threads-internal.h here

	* dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
	use in main library

	* dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function
2005-02-25 22:03:30 +00:00
Colin Walters
1b5dace8e6 2005-02-24 Colin Walters <walters@verbum.org>
* test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml
2005-02-24 22:57:40 +00:00
John (J5) Palmieri
651ca12a81 glib/Makefile.am: added dbus-gobject.h to sources list
so distcheck doesn't fail
2005-02-24 22:01:34 +00:00
Havoc Pennington
2d0ae3d718 remove the todo item I just did 2005-02-24 19:13:37 +00:00
Havoc Pennington
f0e8a17471 doh 2005-02-24 19:00:57 +00:00
Havoc Pennington
cc73b3da32 2005-02-24 Havoc Pennington <hp@redhat.com>
* dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
	you must disconnect before unref, since locking and other things
	are screwed up otherwise. Fix assorted other locking stuff.

	* dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
	fix compilation

	* dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
	into a private header and don't export from the library

	* throughout - call _dbus_thread_stuff vs. dbus_thread_stuff
2005-02-24 18:37:16 +00:00
Colin Walters
54a2e9f796 2005-02-24 Colin Walters <walters@verbum.org>
* dbus/dbus-signature.c: New file; implements various functions
	related to type signatures.  Includes an interator for parsing,
	validation functions.
	(dbus_type_is_basic): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_basic.
	(dbus_type_is_container): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_container.

	All callers of _dbus_type_is_container and _dbus_type_is_basic
	updated, and include dbus-signature.h.

	* dbus/dbus-signature.h: New file; prototypes for the above.

	* dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
	dbus-signature.h.

	* dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
	function factored out of _dbus_first_type_in_signature.
	(_dbus_first_type_in_signature_c_str): New function; returns first
	type code for a type signature character.

	* dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
	handle function moves.

	* dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.

	* dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
	function; skips to next complete type in type signature.
	Implemented using previous skip_one_complete_type.  Now
	skip_one_complete_type just delegates to
	_dbus_type_signature_next.

	* dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
	to dbus-signature.c
	(_dbus_type_is_container): Ditto.

	* doc/dbus-specification.xml: Update introspection sample to
	use real type signatures.

	* dbus/dbus-test.h: Prototype signature test.

	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
	signature tests.

	* dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.
2005-02-24 16:03:56 +00:00
John (J5) Palmieri
d3f1b8bc89 python/dbus_bindings.pyx.in (PendingCall::get_reply):
s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply
2005-02-23 19:36:24 +00:00
Colin Walters
f9a7bcc2fc 2005-02-21 Colin Walters <walters@verbum.org>
* dbus/dbus-test-main.c (main): Take optional specific test
	argument.

	* dbus/dbus-test.c (run_test): New function, runs a test function
	with no data directory.
	(run_data_test): Like above, but takes data directory.
	(dbus_internal_do_not_use_run_tests): Take
	specific test argument.  Replace lots of cut n' paste code
	with run_test and run_data_test.

	* dbus/dbus-test.h: Update prototype for
	dbus_internal_do_not_use_run_tests.
2005-02-21 19:38:06 +00:00
Havoc Pennington
209a5011f7 2005-02-20 Havoc Pennington <hp@redhat.com>
Fix bugs reported by Daniel P. Berrange

	* dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
	(protected_change_watch): new function
	(_dbus_server_toggle_watch, _dbus_server_remove_watch)
	(_dbus_server_add_watch): change to work like the
	dbus-connection.c equivalents; like those, probably kind of
	busted, but should at least mostly work for now
	(dbus_server_disconnect): drop the lock if we were already
	disconnected, patch from Daniel P. Berrange

	* dbus/dbus-server.c (_dbus_server_toggle_timeout)
	(_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
	same stuff

	* doc/TODO: todo about unscrewing this mess
2005-02-21 04:09:40 +00:00
Colin Walters
4c3d2abe27 2005-02-19 Colin Walters <walters@verbum.org>
* glib/dbus-binding-tool-glib.c
	(dbus_binding_tool_output_glib_server): Fix iochannel refcounting.

	* glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
	as errno.h and sys/stat.h.
	(lose): New function, prints error with
	newline and exits.
	(lose_gerror): Similar, but takes GError for message.
	(main): Add --output argument to specify output file to write to,
	instead of always printing to stdout.  In this mode, determine
	timestamps on source files to see whether any are newer than the
	target file.  If not, exit.  Also convert a number of error
	messages to use lose (since it's shorter), and switch to using
	g_io_channel_shutdown.
2005-02-19 23:25:41 +00:00
Havoc Pennington
4ec87547cb add TODO about global shared connections 2005-02-19 16:59:03 +00:00
Havoc Pennington
f9bbe3c0f0 2005-02-19 Havoc Pennington <hp@redhat.com>
* glib/dbus-gobject.c
	(_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs

	* glib/dbus-glib.c: fix doxygen warnings

	* glib/dbus-gparser.c (parse_annotation): error if an annotation
	is found on an <arg>
2005-02-19 16:17:29 +00:00
Colin Walters
74ae666f06 2005-02-17 Colin Walters <walters@verbum.org>
* glib/dbus-gobject.h: Don't export
	_dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
	(invoke_object_method): Handle it.

	* glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
	Handle rename.
2005-02-18 03:14:33 +00:00
Colin Walters
390bab20ce *** empty log message *** 2005-02-17 21:30:42 +00:00
Colin Walters
a9a4cc5f93 2005-02-17 Colin Walters <walters@verbum.org>
* bus/.cvsignore, doc/.cvsignore
	* test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
	Update.
2005-02-17 21:25:49 +00:00
Colin Walters
248895207d 2005-02-17 Colin Walters <walters@verbum.org>
* dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
	Rename to DBUS_SERVICE_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
	DBUS_INTERFACE_INTROSPECTABLE.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
	DBUS_INTERFACE_PROPERTIES.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
	DBUS_INTERFACE_PEER.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL):
	DBUS_INTERFACE_LOCAL.

	All other users of those constants have been changed.

	* bus/driver.c (bus_driver_handle_introspect): Use constants.

	* glib/dbus-gobject.c (handle_introspect): Use constants.

	* doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.
2005-02-17 21:19:49 +00:00
Colin Walters
dc12fac5f8 2005-02-17 Colin Walters <walters@verbum.org>
* glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
	(parse_node, parse_interface, parse_method, parse_signal)
	(parse_property, parse_annotation): Lose if we're currently in an
	annotation.
	(parse_annotation): New function.
	(parser_start_element, parser_end_element): Handle annotation.
	(parse_method, parse_interface): Remove support for c_name attribute,
	switch to annotations.

	* glib/dbus-gidl.h (interface_info_get_binding_names)
	(method_info_get_binding_names)
	(interface_info_get_binding_name, method_info_get_binding_name)
	(interface_info_set_binding_name, method_info_set_binding_name):
	Remove.
	(interface_info_get_annotations, method_info_get_annotations)
	(interface_info_get_annotation, method_info_get_annotation)
	(interface_info_add_annotation, method_info_add_annotation):
	Prototype.

	* glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
	for "bindings".
	(struct MethodInfo): Ditto.
	Straightfoward conversion of binding methods into annotation methods
	as prototyped.

	* glib/dbus-glib-tool.c (pretty_print): Print annotations.

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.

	* glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
	Use new annotation API.

	* doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
	annotation element.

	* doc/dbus-specification.xml: Discuss introspection annotations,
	include list of well-known annotations.

	* test/glib/test-service-glib.xml: Make validate against new DTD.
2005-02-17 21:11:18 +00:00
Colin Walters
03f6615eac 2005-02-17 Colin Walters <walters@verbum.org>
This patch is based on initial work from
	Paul Kuliniewicz <kuliniew@purdue.edu>.

	* glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
	initialization of GValue from dbus type to here.
	(dbus_gvalue_genmarshal_name_from_type): New function; generates a string
	for the "glib-genmarshal" program from a DBus type.
	(dbus_gvalue_binding_type_from_type): New function; turns a DBus type
	into the C name for it we use in the glib bindings.
	(dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
	glib C type (not GValue).
	(dbus_gvalue_demarshal): invoke dbus_gvalue_init.

	* glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
	from dbus-gobject.c.

	* glib/dbus-gutils.h: Prototype it.

	* glib/dbus-gproxy.c: Include new dbus-gobject.h.
	(marshal_dbus_message_to_g_marshaller): Use new shared function
	dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
	Will be changed once we have annotations.

	* glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
	GStaticRWLock.  Callers updated.
	(wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
	(string_table_next): New function for iterating over zero-terminated
	string value array.
	(string_table_lookup): New function; retrieves specific entry in
	array.
	(get_method_data): New function; look up method data in object data chunk.
	(object_error_domain_prefix_from_object_info)
	(object_error_code_from_object_info): New functions, but not implemented yet.
	(method_interface_from_object_info): New function; retrieve interface name.
	(method_name_from_object_info): New function; retrieve method name.
	(method_arg_info_from_object_info): New function; retrieve argument data.
	(arg_iterate): New function; iterates over serialized argument data.
	(method_dir_signature_from_object_info): New function; returns a
	GString holding type signature for arguments for just one
	direction (input or output).
	(method_input_signature_from_object_info)
	(method_output_signature_from_object_info): New functions.
	(dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
	converts dbus message arguments into a GValue array.  Used for both
	signal handling and method invocation.
	(struct DBusGlibWriteIterfaceData): New utility structure.
	(write_interface): New function; generate introspection XML for
	an interface.
	(introspect_interfaces): New function; gathers all interface->methods,
	generates introspection XML for them.
	(handle_introspect): Invoke introspect_interfaces.
	(get_object_property): Be sure to zero-initalize stack-allocated GValue.
	(lookup_object_and_method): New function; examines an incoming message
	and attempts to match it up (via interface, method name, and argument
	signature) with a known object and method.
	(gerror_domaincode_to_dbus_error_name): New function; converts a
	GError domain and code into a DBus error name.  Needs GError data
	added to object introspection to work well.
	(gerror_to_dbus_error_message): Creates a DBusMessage error return from
	GError.
	(invoke_object_method): New function to invoke an object method
	looked up via lookup_object_and_method.  Parses the incoming
	message, turns it into a GValue array, then invokes the marshaller
	specified in the DBusGMethodInfo.  Creates a new message with
	either return values or error message as appropriate.
	(gobject_message_function): Invoke lookup_object_and_method and
	invoke_object_method.

	* glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
	(enum DBusBindingOutputMode): New enum for binding output modes.
	(pretty_print): Print binding names.
	(dbus_binding_tool_error_quark): GError bits.
	(version): Fix typo.
	(main): Create GIOChannel for output.  Parse new --mode argument,
	possible values are "pretty-print", "glib-server", "glib-client".
	Use mode to invoke appropriate function.

	* glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-glib-tool.h: New header, just includes GError bits
	for now.

	* glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
	maps binding style to name.
	(struct MethodInfo): Ditto.
	(get_hash_keys, get_hash_key): Utility function, returns keys for
	a GHashTable.
	(interface_info_new, method_info_new): Initialize bindings.
	(interface_info_unref, method_info_unref): Destroy bindings.
	(method_info_get_binding_names, method_info_get_binding_name)
	(interface_info_get_binding_names, interface_info_get_binding_name):
	Functions for retrieving binding names.
	(method_info_set_binding_name, interface_info_set_binding_name):
	Functions for setting binding names.

	* glib/dbus-binding-tool-glib.h: New file, has prototypes
	for glib binding generation.

	* glib/dbus-binding-tool-glib.c: New file, implements server-side
	and client-side glib glue generation.

	* glib/Makefile.am (dbus_binding_tool_SOURCES): Add
	dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
	dbus-glib-tool.h.

	* dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
	of using GClosureMarshal directly.
	(struct DBusGObjectInfo): Add n_infos member.

	* test/glib/test-service-glib.xml: New file; contains introspection data
	for MyTestObject used in test-service-glib.c.

	* test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
	(my_object_do_nothing, my_object_increment, my_object_throw_error)
	(my_object_uppercase, my_object_many_args): New test methods.
	(main): Use dbus_g_object_class_install_info to include generated object
	info.

	* test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
	as well as client-side bindings.

	* test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
	(main): Activate TestSuiteGLibService; test invoke a bunch of its methods
	using both the dbus_gproxy stuff directly as well as the generated bindings.
2005-02-17 17:41:30 +00:00
Havoc Pennington
9e4450872a 2005-02-15 Havoc Pennington <hp@redhat.com>
* dbus/dbus-connection.c (dbus_connection_dispatch): always
	complete a pending call, don't run filters first.

	* glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
	dbus_pending_call_steal_reply

	* dbus/dbus-pending-call.c (dbus_pending_call_block): just call
	_dbus_connection_block_pending_call
	(dbus_pending_call_get_reply): change to steal_reply and return a
	ref

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): port to work in terms
	of DBusPendingCall
	(_dbus_connection_block_pending_call): replace block_for_reply
	with this
2005-02-16 04:37:27 +00:00
Havoc Pennington
7b340cdb43 2005-02-14 Havoc Pennington <hp@redhat.com>
* dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
	properly handle looking up group information by name; fix
	from j@bootlab.org
2005-02-14 19:07:29 +00:00
Havoc Pennington
be672187a5 oops, committed some debug junk 2005-02-13 20:23:30 +00:00
Havoc Pennington
7f2973c8d1 2005-02-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-connection.c (dbus_connection_return_message)
	(dbus_connection_borrow_message): hold dispatch lock while message
	is outstanding
	(_dbus_connection_block_for_reply): hold dispatch lock while we
	block for the reply, so nobody steals our reply
	(dbus_connection_pop_message): hold the dispatch lock while we
	pluck the message
2005-02-13 20:21:59 +00:00
Havoc Pennington
770dfe0571 2005-02-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
	(_dbus_connection_release_dispatch)
	(_dbus_connection_acquire_io_path)
	(_dbus_connection_release_io_path): make the mutex and condvar
	control access to the "acquired" flag. Drop the connection lock
	while waiting on the condvar. Hopefully these are baby steps in
	roughly the right direction.
2005-02-13 19:49:22 +00:00
Havoc Pennington
46ee60868d 2005-02-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-connection.c: use separate mutexes for the condition
	variables; this is some kind of baseline for sanity, but the
	condition variables still aren't used correctly afaict
2005-02-13 18:17:35 +00:00
Havoc Pennington
f349e6b8c5 2005-02-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	fix a double-unlock

	* dbus/dbus-connection.c
	(_dbus_connection_detach_pending_call_unlocked): add this

        Initial semi-correct pass through to fix thread locking; there are
	still some issues with the condition variable paths I'm pretty
	sure

	* dbus/dbus-server.c: add a mutex on DBusServer and appropriate
	lock/unlock calls

	* dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
	rename to add _unlocked
	(struct DBusConnection): move "dispatch_acquired" and
	"io_path_acquired" to use only one bit each.
	(CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
	(dbus_connection_set_watch_functions): hacky fix to reentrancy
	(_dbus_connection_add_watch, _dbus_connection_remove_watch)
	(_dbus_connection_toggle_watch, _dbus_connection_add_timeout)
	(_dbus_connection_remove_timeout)
	(_dbus_connection_toggle_timeout): drop lock when calling out to
	user functions; done in a hacky/bad way.
	(_dbus_connection_send_and_unlock): add a missing unlock
	(_dbus_connection_block_for_reply): add a missing unlock

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	drop lock in a hacky probably unsafe way to call out to user
	function
2005-02-13 17:16:25 +00:00
Havoc Pennington
970be5fda3 2005-02-12 Havoc Pennington <hp@redhat.com>
* tools/dbus-tree-view.c (info_set_func_text): display more
	details on args

	* bus/driver.c (bus_driver_handle_list_services): list the bus
	driver

	* glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied

	* glib/dbus-gidl.c (signal_info_get_n_args): new function
	(method_info_get_n_args): new function
2005-02-12 20:27:45 +00:00
Havoc Pennington
85fb9ff93c 2005-02-12 Havoc Pennington <hp@redhat.com>
* bus/driver.c (bus_driver_handle_introspect): add introspection
	for bus driver
2005-02-12 20:13:08 +00:00
Havoc Pennington
5b26893cdd 2005-02-12 Havoc Pennington <hp@redhat.com>
* bus/driver.c: put the signature of each bus driver method in the
	table of handlers and check it on incoming calls; this isn't
	really useful, but going to add introspect support in a minute.
2005-02-12 17:13:13 +00:00
Havoc Pennington
03a4a5a976 some todo and spec tweaks 2005-02-12 04:30:34 +00:00
Havoc Pennington
892c68a727 forgot to commit removing address item from TODO 2005-02-12 03:56:22 +00:00
Joe Shaw
0242b82152 2005-02-11 Joe Shaw <joeshaw@novell.com>
* mono/Connection.cs: The unpredictability of finalizers in mono
	prevents us from deterministically disconnecting the filters from
	the Service class's finalizer, so move tracking of filters and
	matches here.  Add API for that.

	* mono/Service.cs: Remove the code, add code which calls the
	methods now on the Connection class.
2005-02-12 00:51:33 +00:00
John (J5) Palmieri
38dad64ace * python/dbus.py (class Sender): added to support dbus signals better
(Bus::add_signal_receiver): added expand_args parameter which defaults
to True.  When expand args is True the signal handler will pass the
message arguments as parameters to the signal handler.  If False
revert to previous behavior where the signal handler must get the
argument list from the message.  This is to help port applications
like HAL that have a tendancy to send variable length argument lists.
self._match_rule_to_receivers is now a dict of dicts.
(Bus::remove_signal_receiver): pop handler off the dict intead of
removing it from a list
(Bus::_signal_func): change signal handlers so that interface,
signal_name, service, path and message are packed into a Sender
object and that is passed to the handler.  If expand_args is True
extract the args list from the message and append it to the parameter
list

* python/dbus_bindings.pyx.in (class Signature): added to support
signiature types
(MessageIter::__init__): changed iteration limit to match D-BUS
(MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY,
STRUCT and VARIENT type support
(MessageIter::python_value_to_dbus_sig): made recursive to support
recursive types
(MessageIter::append*): added Signature, dict, tuple
support

* python/examples/example-client.py: added examples of getting tuples
and dicts

* python/examples/example-service.py: added examples of sending tuples
and dicts

* python/examples/example-signal-recipient.py: Fixed to handle new
signal callback format
2005-02-11 19:51:18 +00:00
Havoc Pennington
aa4f823781 2005-02-10 Havoc Pennington <hp@redhat.com>
* test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
	(call dbus_g_proxy_add_signal)

	* dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
	escape the hostname
	(_dbus_server_new_for_domain_socket): escape the path

	* dbus/dbus-address.c (dbus_address_escape_value): new
	(dbus_address_unescape_value): new
	(dbus_parse_address): unescape values

	* dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function

	* doc/dbus-specification.xml: explain how to escape values in
	addresses
2005-02-11 03:37:03 +00:00
Havoc Pennington
71f3b461b3 2005-02-10 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-factory.c (generate_special): modify test to
	avoid using a non-basic dict key

	* dbus/dbus-marshal-validate-util.c: add test for the below

	* doc/dbus-specification.xml: require that dict keys are a basic
	type

	* dbus/dbus-marshal-validate.c
	(_dbus_validate_signature_with_reason): require that dict key is a
	basic type
2005-02-11 01:13:45 +00:00
Havoc Pennington
df0c640880 2005-02-10 Havoc Pennington <hp@redhat.com>
* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	change to be _and_unlock instead of _unlocked

	* dbus/dbus-connection.c
	(_dbus_connection_send_preallocated_unlocked_no_update): rename to
	have no_update so we can find this bug quickly in future
2005-02-10 23:47:55 +00:00
Havoc Pennington
83dd8129a0 2005-02-10 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-util.c (verify_test_message): tests for string
	array

	* dbus/dbus-message.c (dbus_message_append_args_valist): add
	support for arrays of string/signature/path
2005-02-10 23:17:27 +00:00
Joe Shaw
fd146b370d 2005-02-10 Joe Shaw <joeshaw@novell.com>
* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link,
	_dbus_connection_message_sent): Add the path to
	the verbose output.
	(_dbus_connection_send_preallocated_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_unlocked(), updated the
	dispatch status, and unlocks.  Fixes a bug where certain
	situations (like a broken pipe) could cause a Disconnect message
	to not be sent, tricking the bus into thinking a service was still
	there when the process had quit.
	(_dbus_connection_send_preallocated): Call
	_dbus_connection_send_preallocated_and_unlock().
	(_dbus_connection_send_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_and_unlock().
	(dbus_connection_send): Call _dbus_connection_send_and_unlock().
	(dbus_connection_send_with_reply): Update the dispatch status and
	unlock.

	* mono/Service.cs (~Service): Added.  Removes the filter so that
	we don't get unmanaged code calling back into a GCed delegate.
	(RemoveFilter); Added.
2005-02-10 23:01:28 +00:00
John (J5) Palmieri
8fda602e99 * dbus/dbus-message.c (dbus_message_iter_open_container):
- Removed check for iterator type being an array because
	get_arg_type does not work with writer iterators
	- Pass NULL to _dbus_type_writer_recurse if signiture is NULL
2005-02-10 04:36:23 +00:00
Colin Walters
01f18bcc67 2005-02-07 Colin Walters <walters@verbum.org>
* bus/selinux.c (bus_selinux_allows_send): Handle NULL for
	sender or proposed_recipient.
2005-02-07 14:14:50 +00:00
Havoc Pennington
bf75b24d26 2005-02-07 Havoc Pennington <hp@redhat.com>
* doc/dbus-specification.xml: some more language cleanups; add
	stuff about how to deal with invalid protocol and extension
	points; add _ to allowed chars in auth commands; add EXTENSION_
	auth command prefix
2005-02-07 05:44:57 +00:00
Colin Walters
b4fbcb98f1 2005-02-07 Colin Walters <walters@verbum.org>
* bus/selinux.c (bus_selinux_allows_send): Handle NULL for
	sender or proposed_recipient.
2005-02-07 05:31:59 +00:00
Havoc Pennington
d76937e2e1 2005-02-06 Havoc Pennington <hp@redhat.com>
* s/expected/required/ in a couple places for clarity
2005-02-07 04:47:52 +00:00
Havoc Pennington
7fd58272f9 fix the docs on signal you get when you lose a bus name 2005-02-06 15:35:25 +00:00
Havoc Pennington
96a4751632 2005-02-06 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-factory.c (generate_special): more tests

	* dbus/dbus-marshal-validate.c (validate_body_helper): detect
	array length that exceeds the maximum
2005-02-06 05:19:50 +00:00
Havoc Pennington
8f04e1e01f 2005-02-05 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-factory.c (generate_special): more test cases,
	increasing coverage

	* dbus/dbus-marshal-validate.c (validate_body_helper): return the
	reason why a signature was invalid

	* dbus/dbus-marshal-header.c (load_and_validate_field): fix to
	skip the length of the string before we look at it in validation

	* dbus/dbus-string-util.c (_dbus_string_test): add tests for
	equal_substring

	* dbus/dbus-message.c (_dbus_message_loader_new): default
	max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
2005-02-06 04:21:57 +00:00
Havoc Pennington
0e53d4eed3 2005-02-05 Havoc Pennington <hp@redhat.com>
* dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
	if the signature of a variant was empty
	(_dbus_validate_signature_with_reason): catch "(a)" (array inside
	struct with no element type)

	* dbus/dbus-message-factory.c (generate_uint32_changed): add more
	mangled messages to break things
2005-02-05 21:03:28 +00:00
Havoc Pennington
dde6f303e5 2005-02-04 Havoc Pennington <hp@redhat.com>
* glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
	g_quark_try_string() so it actually can return 0
	(dbus_g_proxy_connect_signal): ditto

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
	bogus warning
	(tristring_from_message): assert cleanly on null path/interface
	(should not be possible though I decided later)
	(dbus_g_proxy_dispose): move proxy manager unregistration here
	(DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
	g_return_if_fail() checks
2005-02-05 04:15:57 +00:00