Commit graph

1974 commits

Author SHA1 Message Date
David Zeuthen
955cc78770 2005-07-13 David Zeuthen <davidz@redhat.com>
* tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
        64 bit signed and unsigned parameters
2005-07-13 21:13:16 +00:00
John (J5) Palmieri
2c413bf281 * python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd
* python/service.py (class Name): renamed BusName to make it clearer
  what the object is for (a name on the bus)

* python/examples/example-service.py,
  python/examples/example-signal-emitter.py: change the Name object to
  BusName
2005-07-13 18:22:35 +00:00
Colin Walters
9f92ac0ef5 2005-07-12 Colin Walters <walters@verbum.org>
Patch from Jim Gettys <Jim.Gettys@hp.com>.

	* tools/dbus-launch.c: Include sys/select.h.
2005-07-12 21:09:54 +00:00
John (J5) Palmieri
d06bfe528b * python/dbus_bindings.pyx.in: removed
* python/dbus_bindings.pyx: Added.
	- Fixed some memleaks (patch from
	  Sean Meiners <sean.meiners@linspireinc.com>)
	- Broke out the #include "dbus_h_wrapper.h" and put it in its
	  own pxd file (Pyrex definition)
	- Broke out glib dependancies into its own pyx module

* python/dbus_bindings.pdx: Added.
	- Defines C class Connection for exporting to other modules

* python/dbus_glib_bindings.pyx: Added.
	- New module to handle lowlevel dbus-glib mainloop integration

* python/glib.py: Added.
	- Registers the glib mainloop when you import this module

* python/services.py: Removed (renamed to service.py)

* python/service.py: Added.
	- (class Server): renamed Name

* python/__init__.py: Bump ro version (0,41,0)
	- don't import the decorators or service module
   	  by default.  These now reside in the dbus.service namespace

* python/_dbus.py (Bus::__init__): Add code run the main loop
  setup function on creation

* python/examples/example-service.py,
  python/examples/example-signal-emitter.py: update examples

* python/examples/gconf-proxy-service.py,
  python/examples/gconf-proxy-service2.py: TODO fix these up

* doc/TODO: Addition
	- Added a Python Bindings 1.0 section
	- added "Add match on args or match on details to match rules"
2005-07-12 18:16:07 +00:00
Colin Walters
922d6bb194 2005-07-12 Colin Walters <walters@verbum.org>
* glib/examples/statemachine/Makefile.am (statemachine-server-glue.h)
	(statemachine-glue.h):
	* glib/examples/Makefile.am (example-service-glue.h)
	(example-signal-emitter-glue.h):
	* glib/Makefile.am (dbus-glib-error-switch.h):
	Add libtool --mode=execute so we use the built library instead
	of any installed one.
2005-07-12 17:57:04 +00:00
Colin Walters
622cc8af61 2005-07-11 Colin Walters <walters@verbum.org>
* glib/dbus-gvalue.c (struct _DBusGValue): Delete.
	(dbus_g_value_types_init): Remove assertion.
	(dbus_g_value_get_g_type, dbus_g_value_open)
	(dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
	(dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
	functions related to DBusGValue.  Now we marshal/demarshal
	structures as GValueArray.
	(dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
	structures.
	(signature_iter_to_g_type_array): Don't call
	signature_iter_to_g_type_struct.
	(signature_iter_to_g_type_struct): Delete.
	(dbus_gvalue_to_signature): Delete.
	(dbus_gvalue_to_signature): New function with same name as other
	one; we can convert structures to signatures.
	(demarshal_valuearray): New function.
	(get_type_demarshaller): Use it.
	(demarshal_recurse): Delete.
	(marshal_proxy): New function.
	(marshal_map): Warn if we can't determine signature from type.
	(marshal_collection_ptrarray): Ditto.
	(marshal_collection_array): Ditto.
	(get_type_marshaller): Use marshal_valuearray.
	(marshal_recurse): Delete.
	(_dbus_gvalue_test): Add some tests.

	* dbus/dbus-glib.h (struct _DBusGValueIterator):
	(dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
	(dbus_g_value_open, dbus_g_value_iterator_get_value)
	(dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
	(dbus_g_value_free): Remove prototypes.

	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
	G_TYPE_VALUE_ARRAY.

	* glib/examples/example-service.c:
	* glib/examples/example-client.c: Implement GetTuple.

	* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml: Add structure tests.
2005-07-11 16:12:50 +00:00
Colin Walters
8c095eea8f 2005-07-10 Colin Walters <walters@verbum.org>
* doc/TODO: Knock off some GLib items with this patch.

	* glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error)
	(_dbus_gvalue_signals_error): New functions.

	* glib/dbus-gvalue-utils.h: Prototype them.

	* glib/dbus-gobject.c (arg_iterate): Update to handle return vals
	and change to not output const/retval flags for input args.  All
	callers updated.
	(invoke_object_method): Refactor to handle return values.  Add
	some more comments in various places.  Remove debug g_print.

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.

	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
	Handle G_TYPE_NONE.
	(compute_gsignature): New function; refactored from code from
	compute_marshaller and compute_marshaller_name.  Enhance to
	handle return values and async ops more cleanly.  Update for
	async ops returning NONE instead of BOOLEAN.
	(compute_marshaller, compute_marshaller_name): Call compute_gsignature
	and output appropriate string.
	(generate_glue): Handle return value annotation.  Also don't dump
	constness flag for input arguments.

	* glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
	files shared between installed library and utilities.
	(libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
	(libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
	binding tool can access gtype utility functions.

	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml:
	* test/glib/test-dbus-glib.c: Add some tests for return values.
2005-07-10 22:54:19 +00:00
Colin Walters
745b19d640 2005-07-09 Colin Walters <walters@verbum.org>
* glib/dbus-gparser.c (parse_annotation): Add annotations to
	argument if available, not method.

	* glib/dbus-gobject.c (arg_iterate): More verbose warnings.
	(invoke_object_method): First, remove some redundant
	GValues (object_value, error_value) in favor of working on
	array directly.  Second, rework constness to be less buggy.
	Now we iterate directly over the argument metadata instead
	of parallel iterating over output signature and metadata.

	* glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.

	* glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
	annotation on input args.
2005-07-09 18:54:45 +00:00
Colin Walters
b1ae5399f8 2005-07-09 Colin Walters <walters@verbum.org>
* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
	Define.

	* glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
	annotation.

	* glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
	(method_dir_signature_from_object_info): Handle arg_iterate change.
	(write_interface): Ditto.
	(lookup_object_info): Don't barf if format_version is > 0.
	(invoke_object_method): Handle arg constness.

	* glib/dbus-gidl.c (struct ArgInfo): Add annotations.
	(arg_info_new): Create.
	(arg_info_unref): Destroy.
	(arg_info_get_annotations, arg_info_get_annotation)
	(arg_info_add_annotation): New functions.

	* glib/dbus-gidl.h: Prototype them.

	* glib/dbus-gparser.c (parse_annotation): Allow annotations in
	args, disallow them in properties.
	(parse_annotation): Handle arg annotations.

	* test/glib/test-service-glib.xml:
	* test/glib/test-service-glib.c: Update to make some methods
	const.
2005-07-09 17:52:52 +00:00
Colin Walters
0ccef79d7e 2005-07-08 Colin Walters <walters@verbum.org>
* test/glib/test-service-glib.xml:
	* test/glib/test-service-glib.c:
	* test/glib/test-dbus-glib.c: Test a{sv}.

	* glib/examples/statemachine/statemachine.c:
	* glib/examples/statemachine/statemachine-server.c:
	* glib/examples/statemachine/statemachine-client.c: Fix some bugs,
	add progress bar, etc.

	* glib/dbus-gvalue.c (register_array, register_dict): Delete; not
	needed anymore due to generic array/map marshalling.
	(dbus_g_value_types_init): Don't register basic arrays or the
	string/string hash.
	(dbus_gtype_from_signature_iter): Don't try to recurse into
	variants.
	(dbus_gtype_to_signature): Check collection/map before type
	metadata.
	(demarshal_garray_basic): Renamed to demarshal_collection_array.
	(demarshal_ghashtable): Renamed to demarshal_map; fix to use new
	generic map creation/append functions instead of hash table
	specifically.
	(get_type_demarshaller): Handle maps.
	(demarshal_collection): Dispatch on collection type to either
	demarshal_collection_ptrarray or demarshal_collection_array.
	(get_type_marshaller): Handle maps.
	(marshal_collection): Dispatch collection type to either
	marshal_collection_ptrarray or marshal_collection_array.
	(_dbus_gvalue_test): New test.

	* glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
	(hash_free_from_gtype): Use it to free GValues.
	(hashtable_append): New function.
	(ptrarray_append): Fix prototype.
	(slist_append): Ditto.
	(_dbus_gvalue_utils_test): Extend tests.

	* glib/dbus-gtype-specialized.c
	(dbus_g_type_specialized_init_append): Renamed from
	dbus_g_type_specialized_collection_init_append.  Remove const from
	value, since we steal it.
	(dbus_g_type_specialized_map_append): New function.

	* glib/dbus-gtype-specialized.h: Update prototypes.
	Add DBusGTypeSpecializedMapAppendFunc.

	* glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
	_dbus_gvalue_test.

	* glib/dbus-gtest.h: Prototype it.
2005-07-09 01:46:51 +00:00
Ross Burton
d8e7405eb3 Make async bindings work again 2005-07-08 17:02:42 +00:00
Colin Walters
82d6ea6ca6 2005-07-08 Colin Walters <walters@verbum.org>
* doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
	connection concept.
2005-07-08 16:41:57 +00:00
Colin Walters
e888647a70 2005-07-08 Colin Walters <walters@verbum.org>
* tools/Makefile.am: Kill of print-introspect in favor of using
	dbus-send --print-reply=literal.
	* tools/print-introspect.c: Deleted.

	* test/glib/test-service-glib.xml:
	* test/glib/test-service-glib.c (my_object_get_objs): New test
	for "ao".

	* test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
	(main): Test GetObjs.

	* glib/examples/statemachine/Makefile.am:
	* glib/examples/statemachine/sm-marshal.list:
	* glib/examples/statemachine/statemachine-client.c:
	* glib/examples/statemachine/statemachine-server.c:
	* glib/examples/statemachine/statemachine-server.xml:
	* glib/examples/statemachine/statemachine.c:
	* glib/examples/statemachine/statemachine.h:
	* glib/examples/statemachine/statemachine.xml:

	New example.

	* glib/examples/example-service.c (main): Move invocation
	of dbus_g_object_type_install_info earlier, to emphasize it
	should only be done once.

	* glib/examples/example-signal-emitter.c (main): Ditto.

	* glib/examples/Makefile.am (SUBDIRS): Include statemachine.

	* glib/dbus-gvalue.h (dbus_gtype_to_signature)
	(dbus_gvalue_marshal): Update prototypes.

	* glib/dbus-gvalue.c: Update all marshalling functions to take
	const GValue instead of GValue.
	(signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
	types.
	(dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
	change.
	(dbus_gtype_to_signature): Handle generic collecitons and maps.
	Return a newly-allocated string.
	(demarshal_proxy, demarshal_object_path, demarshal_object)
	(demarshal_strv, demarshal_ghashtable): Set error, don't assert if
	we get the wrong types from message.
	(get_type_demarshaller): New function, extracted from
	dbus_gvalue_demarshal.
	(demarshal_collection): New function, demarshals generic
	collection.
	(dbus_gvalue_demarshal): Just invoke result of
	get_type_demarshaller.  Throw error if we don't have one.
	(marshal_garray_basic): Abort on OOM.
	(get_type_marshaller): New function, extracted from
	dbus_gvalue_marshal.
	(collection_marshal_iterator, marshal_collection): New functions;
	implements generic marshalling for an iteratable specialized
	collection.
	(dbus_gvalue_marshal): Just invoke result of get_type_marshaller.

	* glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
	G_TYPE_STRING.
	(ptrarray_value_from_gvalue): Ditto.
	(ptrarray_append, ptrarray_free): New functions.
	(slist_constructor, slist_iterator, slist_copy_elt, slist_copy)
	(slist_append, slist_end_append, slist_free): New functions.
	(dbus_g_type_specialized_builtins_init): Add append fuctions
	for GPtrArray and GSList.  Register GSList.
	(test_specialized_hash, _dbus_gvalue_utils_test): New functions.

	* glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
	New.
	(dbus_g_type_specialized_collection_init_append)
	(dbus_g_type_specialized_collection_append)
	(dbus_g_type_specialized_collection_end_append): Prototype.
	(DBusGTypeSpecializedCollectionVtable): Add append_func and
	end_append_func.

	* glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append)
	(dbus_g_type_specialized_collection_append)
	(dbus_g_type_specialized_collection_end_append): New functions.
	(dbus_g_type_map_value_iterate): Take const GValue.
	(dbus_g_type_collection_value_iterate): Ditto.

	* glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
	_dbus_gvalue_utils_test.

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

	* glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
	using uninitialized owner_list.
	(dbus_g_proxy_begin_call_internal): Move return_if_fail to
	public API.
	(dbus_g_proxy_end_call_internal): Update to use error set
	from dbus_gvalue_demarshal instead of setting it here.
	(dbus_g_proxy_begin_call): Move return_if_fail here.

	* glib/dbus-gobject.c (write_interface): Update for
	dbus_gtype_to_signature returning new string.

	* configure.in: Add glib/examples/statemachine.
2005-07-08 16:25:39 +00:00
Joe Shaw
b1e21dad20 2005-07-08 Joe Shaw <joeshaw@novell.com>
* configure.in: Add a configure option, --with-console-auth-dir

	* dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
	new setting.  Patch from Kay Sievers.
2005-07-08 14:36:22 +00:00
Colin Walters
2ca6e95764 2005-07-06 Colin Walters <walters@verbum.org>
* dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
	(DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
	(dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
	(dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
	Delete in favor of dbus_g_proxy_begin_call and
	dbus_g_proxy_cancel_call.
	(DBusGProxyCall, DBusGProxyCallNotify): New.
	(dbus_g_proxy_begin_call): Change prototype to take callback, user
	data, and destroy function.  This replaces
	dbus_g_pending_call_set_notify.
	(dbus_g_proxy_cancel_call): Prototype.
	(DBusGAsyncData): Delete, shouldn't be needed anymore.

	* glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
	pending_calls map.
	(struct _DBusGProxyManager): Add bus_proxy member, which is an
	internal proxy for calls to the bus. Remove
	pending_nameowner_calls, now the internal proxy keeps track.
	(dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
	pending_nameowner_calls.
	(got_name_owner_cb): Update prototype, and use
	dbus_g_proxy_end_call.
	(got_name_owner_cb): Remove reference to pending_nameowner_calls.
	(dbus_g_proxy_manager_register): Delete directly libdbus code in
	favor of using internal proxy.
	(dbus_g_proxy_manager_unregister): Update to use
	dbus_g_proxy_cancel_call for any pending GetNameOwner call.
	(dbus_g_proxy_init): Initialize pending calls map.
	(dbus_g_proxy_constructor): New.
	(dbus_g_proxy_class_init): Add get/set property functions,
	constructor, and add NAME, PATH, and INTERFACE properties.
	(cancel_pending_call): New function.
	(dbus_g_proxy_dispose): Iterate over any outstanding calls and
	cancel them.
	(dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
	(GPendingNotifyClosure): New structure.
	(d_pending_call_notify, d_pending_call_free): Moved here from
	dbus-glib.c.
	(DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
	ordering.
	(manager_begin_bus_call): New internal function for talking to
	internal bus proxy.
	(dbus_g_proxy_new): Construct object using GObjet properties.
	(dbus_g_proxy_begin_call_internal): Update to take user data, etc.
	Create closure of same, and insert call into map of pending calls.
	(dbus_g_proxy_end_call_internal): Take call id instead of pending
	call.  Look up pending call in current set.  Remove it when we've
	completed.
	(dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
	(dbus_g_proxy_begin_call): Change API to take callback, user data,
	and destroy function directly.
	(dbus_g_proxy_end_call): Update to take DBusGProxyCall.
	(dbus_g_proxy_call): Invoke with NULL callback.
	(dbus_g_proxy_cancel_call): New function, replaces
	dbus_g_pending_call_cancel.

	* glib/dbus-gparser.c (validate_signature): Fix call to
	dbus_set_g_error.

	* glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
	New quark for attaching metadata to GType.
	(info_hash): Delete.
	(lookup_object_info): Look up using quark.
	(dbus_g_object_type_install_info): Check that a type is classed,
	not that it's an object.  Also just install type data using quark
	instead of using global hash.

	* glib/dbus-glib.c (dbus_g_pending_call_ref)
	(dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
	(GPendingNotifyClosure): Delete.
	(d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
	(dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.

	* glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
	client method generation until we can fix it...

	* tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
	(load_from_service_thread_func): Ditto.

	* tools/dbus-names-model.c (struct NamesModel): Hold
	DBusGProxyCall.
	(have_names_notify): Update prototype, use
	dbus_g_proxy_cancel_call.
	(names_model_reload): Update for new dbus_g_proxy_begin_call API.

	* tools/dbus-monitor.c (filter_func): Update for print_message
	API change.

	* test/glib/test-dbus-glib.c: Add more tests for async
	invocations.  Update many begin_call/end_call pairs to just use
	dbus_g_proxy_call.

	* tools/dbus-send.c (main): Add --print-reply=literal mode.  This
	allows us to dump print-introspect.c.

	* tools/dbus-print-message.h (print_message): Add literal argument
	to print_message which is intended to allow printing arguments without
	metadata like "string=".

	* tools/dbus-print-message.c (print_iter): Add literal argument.
	(print_message): Allow printing string messages literally.
2005-07-06 21:27:53 +00:00
Colin Walters
42c4a46d66 2005-07-05 Colin Walters <walters@verbum.org>
* glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
	Remove value refcount leak, original patch from Jorn Baayen
	<jorn@openedhand.com>.  Also remove useless extra value in favor
	of prepending to value array directly.
2005-07-05 16:39:56 +00:00
Colin Walters
22e9820814 2005-07-02 Colin Walters <walters@verbum.org>
* glib/dbus-gmain.c (_dbus_gmain_test): Fix test.
2005-07-02 06:05:23 +00:00
Colin Walters
249c5ea945 2005-07-01 Colin Walters <walters@verbum.org>
Patch from Jonathan Matthew <jonathan@kaolin.hn.org>

	* glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
	(dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
	G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
	and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.
2005-07-01 15:44:12 +00:00
Colin Walters
03d040311a 2005-06-30 Colin Walters <walters@verbum.org>
* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml: Update tests for new error
	setting bits, also add async tests (patch from Ross Burton).

	* test/glib/Makefile.am (test_service_glib_LDADD): Add
	DBUS_GLIB_THREADS_LIBS.

	* glib/dbus-gproxy.c (get_name_owner)
	(dbus_g_pending_call_end_valist): Ditto.

	* glib/dbus-gobject.c (error_metadata): New mapping from GError
	domain (GQuark) to DBusGErrorInfo.
	(gerror_domaincode_to_dbus_error_name): Attempt to look up error
	quark in error_metadata.  Take message interface as default
	error message interface.
	(gerror_to_dbus_error_message): Pass message interface.
	(dbus_set_g_error): Resurrected.
	(dbus_g_error_info_free): New function.
	(dbus_g_object_type_install_info): Use g_type_class_ref instead
	of _peek to actually create the object class if it hasn't been
	created yet.
	(dbus_g_error_domain_register): New function.

	* glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.

	* glib/dbus-gparser.c (validate_signature): Ditto.

	* dbus/dbus-glib.h (dbus_g_error_set): Delete.
	(dbus_g_error_domain_register): Prototype.

	* glib/dbus-glib.c (dbus_g_error_set): Delete.
	Update tests.
2005-06-30 18:22:10 +00:00
Colin Walters
b3c42d2264 2005-06-29 Colin Walters <walters@verbum.org>
* dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
	DBUS_TYPE_G_OBJECT_PATH.

	* glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
	for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
	be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
	(dbus_g_object_path_get_g_type): New function.
	(dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
	to DBUS_TYPE_G_OBJECT_PATH by default.
	(demarshal_proxy): Remove unused name variable.
	(demarshal_object_path, marshal_object_path): New functions.
	(demarshal_proxy_array, marshal_proxy_array): Delete.

	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
	DBUS_TYPE_G_OBJECT_PATH to char *.
	(dbus_g_type_get_lookup_function): Map builtin
	DBUS_TYPE_G_OBJECT_PATH.

	* test/glib/test-dbus-glib.c
	* test/glib/test-service-glib.c (my_object_objpath):
	Adapt tests to new object path marshalling.
2005-06-29 23:52:35 +00:00
John (J5) Palmieri
d8dd432f39 * configure.in: force check for Python >= 2.4 2005-06-29 19:12:17 +00:00
Colin Walters
a15a5811d7 2005-06-29 Colin Walters <walters@verbum.org>
Patch from Ross Burton <ross@openedhand.com>

	* glib/dbus-gobject.c (invoke_object_method): Unset object
	value in all cases, not only in async case.
2005-06-29 17:02:33 +00:00
Colin Walters
ab1ae1f4e2 2005-06-29 Colin Walters <walters@verbum.org>
* glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
	name_call for keeping track of any outgoing GetNameOwner call.
	Also add for_owner and associated.
	(struct _DBusGProxyManager): Add owner_names, which is hash table
	that maps a base name to a list of names it owns (that we're
	interested in).  Add pending_nameowner_calls which is a list of
	all outstanding GetNameOwner; avoids us having to iterate over
	every proxy.  Add unassociated_proxies which keeps track of name
	proxies with no associated name owner.
	(dbus_g_proxy_manager_unref): Destroy owner_names.
	(struct DBusGProxyNameOwnerInfo): New struct for keeping track of
	name refcounts.
	(find_name_in_info, name_owner_foreach)
	(dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
	(dbus_g_proxy_manager_monitor_name_owner)
	(dbus_g_proxy_manager_unmonitor_name_owner)
	(unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
	New functions; they manipulate the owner_names mapping.
	(got_name_owner_cb): New function.
	(get_name_owner): New function, extracted from
	dbus_g_proxy_new_for_name_owner.
	(dbus_g_proxy_manager_register): For now we need to keep track of
	all NameOwnerChanged.  Also if the proxy is for a name, if we
	don't already know the name owner, queue a new GetNameOwner
	request and add it to our list of unassociated proxies.  Otherwise
	inc the refcount.
	(dbus_g_proxy_manager_unregister): If this proxy is for a name,
	cancel any pending GetNameOwner call, etc.
	(dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
	the owner_names mapping to look up the current names for the
	signal source, and dispatch to any proxies for that name.
	(dbus_g_proxy_new): Initialize new members.
	(dbus_g_proxy_new_for_name): Delete unused proxy variable.
	(dbus_g_proxy_new_for_name_owner): Use get_name_owner.
	(dbus_g_pending_call_end_valist): New function, extracted from
	dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
	but want to use the GLib infrastructure.  Also note how many
	arguments in reply were over.
	(dbus_g_pending_call_end): New function, just call
	dbus_g_pending_call_end_valist.
	(dbus_g_proxy_end_call_internal): Just call
	dbus_g_pending_call_end_valist.

	* glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
	of builtin marshaller for STRING_STRING_STRING.

	* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml:
	Extend tests to cover name proxies, destruction of owner proxies,
	etc.

	* glib/examples/example-signal-recipient.c
	(dbus_g_proxy_new_for_name_owner): Create a name proxy.

	* tools/dbus-send.c (main): Print D-BUS error name in addition
	to message.
2005-06-29 16:59:00 +00:00
John (J5) Palmieri
a3406a8279 * python/dbus_bindings.pyx.in (cunregister_function_handler,
cmessage_function_handler): Patch from
  Anthony Baxter <anthony@interlink.com.au> fixes threading problems
  by using the Py_GILState_Ensure/Release to synchronize with the
  python runtime.
2005-06-28 19:36:51 +00:00
Ray Strode
c17dc995ce 2005-06-28 Ray Strode <rstrode@redhat.com>
*  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
	babysitter helper process on last unref, bug #2813.
2005-06-28 15:14:21 +00:00
Colin Walters
0c6f2bbff5 2005-06-27 Colin Walters <walters@verbum.org>
* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml:
	Test hash table signal emitting.

	* glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
	types to their fundamental basis types, since this is what
	marshallers operate on.  Also add an entry for VOID__BOXED.
	(dbus_g_object_register_marshaller_array): Convert to fundamental.
2005-06-27 18:20:20 +00:00
Havoc Pennington
3427ef3d39 2005-06-26 Havoc Pennington <hp@redhat.com>
* doc/dbus-tutorial.xml: fix names of interface/service/path, fix
	from Don Park
2005-06-27 01:37:03 +00:00
Colin Walters
df901b528b 2005-06-26 Colin Walters <walters@verbum.org>
* glib/dbus-glib.c (dbus_set_g_error): Delete.
	(dbus_g_error_set): New public function from its ashes; used by
	both service-side method implementation and GLib bindings
	internals.
	(dbus_g_error_has_name, dbus_g_error_get_name): New function.
	(_dbus_glib_test): Add some tests.

	* test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.

	* test/glib/test-service-glib.c (my_object_throw_error): Use
	dbus_g_error_set.

	* glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
	errors thrown by dbus_g_error_set.

	* glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.

	* glib/dbus-gparser.c (validate_signature): Ditto.

	* glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner)
	(dbus_g_proxy_end_call_internal): Ditto.

	* glib/Makefile.am: Generate dbus-glib-error-switch.h, which
	converts DBUS_ERROR_x to DBUS_GERROR_x.
	(libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.

	* doc/TODO: Remove error TODO.

	* doc/dbus-tutorial.xml: Update with documentation about error
	handling.

	* dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
	sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
	GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.
2005-06-26 17:02:09 +00:00
Colin Walters
c904e1e3a6 2005-06-22 Colin Walters <walters@verbum.org>
Patch from Ross Burton <ross@openedhand.com>

	* glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.
2005-06-22 23:35:32 +00:00
Colin Walters
21a73df1b5 2005-06-20 Colin Walters <walters@verbum.org>
* configure.in: Add glib/examples.

	* glib/Makefile.am: Add examples/

	* glib/examples/.cvsignore
	* glib/examples/Makefile.am
	* glib/examples/example-client.c
	* glib/examples/example-service.c
	* glib/examples/example-service.xml
	* glib/examples/example-signal-emitter.c
	* glib/examples/example-signal-emitter.xml
	* glib/examples/example-signal-recipient.c:
	New files; GLib binding examples, ported from
	python/examples.
2005-06-21 01:18:25 +00:00
Colin Walters
778579ec21 2005-06-20 Colin Walters <walters@verbum.org>
* dbus/dbus-glib.h:
	* glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
	dbus_g_proxy_call.

	* glib/dbus-binding-tool-glib.c:
	* doc/dbus-tutorial.xml:
	* test/glib/test-dbus-glib.c: Update for rename.
2005-06-21 00:30:20 +00:00
Colin Walters
7883563478 2005-06-20 Colin Walters <walters@verbum.org>
Patch suggested by Ross Burton <ross@openedhand.com>

	* glib/dbus-gobject.c (export_signals): Free signal name.
	(g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
	memory leak.  Add a bit of documentation.
	(dbus_g_method_return_error): Free context, and note we do
	so.
2005-06-20 19:54:22 +00:00
Murray Cumming
6a4596752c 2005-06-18 Murray Cumming <murrayc@murrayc.com>
* dbus/dbus-glib.h:
        * glib/dbus-gobject.c:
        * glib/dbus-gproxy.c:
        * glib/dbus-gvalue.c: Predeclare structs as
        typedef struct _Something Something instead of
        typedef struct Something Something, so we can
        redeclare the prototypes. Other GNOME libraries
        do this already.
2005-06-19 15:31:25 +00:00
Colin Walters
6e3a318982 2005-06-17 Colin Walters <walters@verbum.org>
* tools/dbus-names-model.c (have_names_notify): Fix call
	to dbus_g_proxy_end_call.
2005-06-17 17:10:41 +00:00
Colin Walters
949436ffac 2005-06-17 Colin Walters <walters@verbum.org>
* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
	spew warnings if we get malformed remote signals.

	* glib/dbus-gobject.c (propsig_iterate): New function.
	(lookup_object_info): New function, extracted from
	lookup_object_and_method.
	(introspect_properties, introspect_signals): Delete; these
	are merged into write_interface.
	(write_interface): Write out signals and properties here;
	dump the org.gtk.object stuff and use the interface given
	in the introspection data blob.  Also fix up property XML.
	(lookup_values): New function.
	(introspect_interfaces): Gather a mapping from interface to a
	list of its methods, signals, and properties, then write out
	each interface.
	(lookup_object_and_method): Use lookup_object_info.
	(struct DBusGSignalClosure): Add interface.
	(dbus_g_signal_closure_new): Add interface. Don't dup signame;
	we can just use the constant data.
	(dbus_g_signal_closure_finalize): Don't free signal name.
	(signal_emitter_marshaller): Use interface from signal closure.
	(export_signals): Only export signals mentioned in introspection
	blob.
	(dbus_g_connection_register_g_object): Warn if we have no
	introspection data for an object.
	(funcsig_equal): Remove unused variable.
	(dbus_g_object_register_marshaller): Take varargs instead of
	list.
	(dbus_g_object_register_marshaller_array): New function,
	extracted from old dbus_g_object_register_marshaller.

	* glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
	signals and property data.
	(write_quoted_string): New function, extracted from generate_glue.
	(generate_glue): Write signals and properties to introspection
	blob.

	* dbus/dbus-glib.h (struct DBusGObjectInfo): Include
	exported_signals and exported_properties.
	(dbus_g_object_register_marshaller): Update prototype.
	(dbus_g_object_register_marshaller_array): Prototype.

	* test/glib/test-dbus-glib.c: Extend testing to cover new signals.

	* test/glib/test-service-glib.c: Add new test signals and method
	to emit them.

	* test/glib/test-service-glib.xml: Add some test signals.

	* test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
	and my-object-marshal.h
	(test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
	my-object-marshal.c.
	(my-object-marshal.c, my-object-marshal.h): Implement.

	* test/glib/.cvsignore: Update.

	* doc/TODO: Remove two GLib TODO items fixed by this
	patch.
2005-06-17 14:29:48 +00:00
Colin Walters
679018f00c 2005-06-16 Colin Walters <walters@verbum.org>
* doc/TODO: Update for GLib bindings.
2005-06-16 19:57:31 +00:00
Colin Walters
887a1dc0e3 2005-06-16 Colin Walters <walters@verbum.org>
* glib/dbus-binding-tool-glib.c:
	* glib/dbus-gobject.c:
	* glib/dbus-gproxy.c:  Add Nokia copyright; Patch
	from Ross Burton, for his GLib bindings work.
2005-06-16 19:50:25 +00:00
Colin Walters
f5bb7fc1b0 2005-06-16 Colin Walters <walters@verbum.org>
* glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
	to iterate instead of walking to G_TYPE_INVALID.

	Patch based on a patch from Ryan Gammon.
2005-06-16 19:45:49 +00:00
Colin Walters
6b2af67ae1 2005-06-16 Colin Walters <walters@verbum.org>
* bus/bus.c (bus_context_new): Set parser to NULL
	after we unref it (Patch from Chris Boscolo, #2174).
2005-06-16 06:05:09 +00:00
Colin Walters
ddce490e79 2005-06-16 Colin Walters <walters@verbum.org>
* python/dbus_bindings.pyx.in: Import size_t,
	__int64_t, __uint64_t, and __signed.

	* dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
	Define cmsg struct, output it.
	(_dbus_read_credentials_unix_socket):
	Use cmsg struct.

	Patch from Joe Markus Clarke for FreeBSD support.
2005-06-16 05:51:46 +00:00
Colin Walters
70bd20a50e 2005-06-16 Colin Walters <walters@verbum.org>
* tools/dbus-send.c (append_array): Use strtok.
	(append_dict): New function.
	(type_from_name): New function, extracted from main.
	(main): Handle sending dicts.

	* tools/dbus-print-message.c (print_iter): Print dict
	entries.
2005-06-16 04:48:10 +00:00
Colin Walters
3220372584 2005-06-16 Colin Walters <walters@verbum.org>
* glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
	values as the empty string (#2948).
2005-06-16 04:38:11 +00:00
Colin Walters
6fe36d8791 2005-06-16 Colin Walters <walters@verbum.org>
* dbus/Makefile.am:
	* mono/doc/Makefile.am:
	* test/glib/Makefile.am:

	Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)
2005-06-16 04:32:50 +00:00
Colin Walters
5935f33b75 2005-06-16 Colin Walters <walters@verbum.org>
* dbus/dbus-marshal-header.c (_dbus_header_load): Set
	header byte order from expected byte order (Patch from Chris Wilson, #3475).

	* dbus/dbus-marshal-byteswap.c (byteswap_body_helper):
	Increment pointer after swapping fixed array.  Add assertion
	for array length.
2005-06-16 04:27:45 +00:00
Colin Walters
5cd4c9ac5f 2005-06-15 Colin Walters <walters@verbum.org>
* dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
	Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
2005-06-15 19:33:04 +00:00
John (J5) Palmieri
b28bbb092b * Bumped version for CVS HEAD 2005-06-15 18:35:18 +00:00
John (J5) Palmieri
e235a2a73a * NEWS: Update to 0.34 2005-06-15 18:32:32 +00:00
John (J5) Palmieri
6043a0be44 * dbus/dbus-connection.c (_dbus_connection_peer_filter): New method
(_dbus_connection_run_builtin_filters): New method
        (dbus_connection_dispatch): Run the builtin filters which in turn
        runs the peer filter which handles Ping messages.

        * doc/TODO:
         - Ping isn't handled: This patch fixes it

         - Add a test case for the Ping message: added TODO item
2005-06-15 16:20:28 +00:00
John (J5) Palmieri
a93f9c04ac * dbus/dbus-message.c:
(dbus_message_has_path): New method
        (dbus_message_has_interface): New method
        (dbus_message_has_member): New method

        * dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
        New method

        * dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that
        the keyring directory is private to the user

        * doc/TODO:
         - The convenience functions in dbus-bus.h should perhaps have
         the signatures that they would have if they were autogenerated
         stubs. e.g. the acquire service function. We should also evaluate
         which of these functions to include, in light of the fact that
         GLib/Qt native stubs will probably also exist.: Punted

         - add dbus_message_has_path(), maybe has_member/interface:
         fixed in this patch

         - in dbus-keyring.c, enforce that the keyring dir is not
         world readable/writable: Fixed in this patch
2005-06-15 15:59:57 +00:00
John (J5) Palmieri
5e389fdf49 * dbus/dbus-marshal-validate.h: Added a new validation
error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for
        out of memory errors when validating signitures

        * dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
        in places where we previously used DBUS_VALID and a FALSE return
        value to indicate OOM

        * dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
        Use a stack to track the number of elements inside containers.  The
        stack values are then used to validate that dict entries have only two
        elements within them.
        (validate_body_helper): check the reason for failure when validating
        varients

        * dbus/dbus-message.c (load_message): use
        DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used
        DBUS_VALID and a FALSE return value to indicate OOM

        * doc/TODO: remove "- validate dict entry number of fields" as this
        patch fixes it
2005-06-15 15:15:32 +00:00