Commit graph

19 commits

Author SHA1 Message Date
Havoc Pennington
9c010fbc04 2003-04-25 Havoc Pennington <hp@redhat.com>
* glib/dbus-gmain.c (remove_watch): fix for a crash when watches
	were toggled without add/remove, fix from Anders Gustafsson
2003-04-25 20:41:49 +00:00
James Willcox
c2a2855711 2003-04-23 James Willcox <jwillcox@gnome.org>
* glib/dbus-glib.h:
	* glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
	(dbus_connection_setup_with_g_main),
	(dbus_server_setup_with_g_main):
	* glib/test-dbus-glib.c: (main):
	* glib/test-thread-client.c: (main):
	* glib/test-thread-server.c: (new_connection_callback), (main):
	* tools/dbus-monitor.c: (main):

	Added a GMainContext argument to dbus_connection_setup_with_g_main()
	and dbus_server_setup_with_g_main().
2003-04-24 02:22:49 +00:00
Havoc Pennington
3df260c071 2003-04-18 Havoc Pennington <hp@pobox.com>
* glib/dbus-gmain.c: adapt to watch changes

	* bus/bus.c, bus/activation.c, etc.: adjust to watch changes

	* dbus/dbus-server.h: remove dbus_server_handle_watch

	* dbus/dbus-connection.h: remove dbus_connection_handle_watch

	* dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
	like DBusTimeout, so we don't need dbus_connection_handle_watch
	etc.
2003-04-18 04:18:57 +00:00
Havoc Pennington
ebb57e719c 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
	this. always run the test suite before commit...

	* bus/*: adapt to DBusConnection API changes

	* glib/dbus-gmain.c: adapt to DBusConnection API changes,
	requires renaming stuff to avoid dbus_connection_dispatch name
	conflict.

	* dbus/dbus-transport.c (_dbus_transport_queue_messages): new
	function

	* dbus/dbus-message.c (_dbus_message_loader_queue_messages):
	separate from _dbus_message_loader_return_buffer()

	* dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
	this, because it's now always broken to use; the number of
	messages in queue vs. the number still buffered by the message
	loader is undefined/meaningless. Should use
	dbus_connection_get_dispatch_state().
	(dbus_connection_dispatch): rename from
	dbus_connection_dispatch_message
2003-03-16 20:16:47 +00:00
Havoc Pennington
f587ce7845 2003-03-15 Havoc Pennington <hp@pobox.com>
Make it pass the Hello handling test including all OOM codepaths.
	Now to do other messages...

	* bus/services.c (bus_service_remove_owner): fix crash when
	removing owner from an empty list of owners
	(bus_registry_ensure): don't leave service in the list of
	a connection's owned services if we fail to put the service
	in the hash table.

	* bus/connection.c (bus_connection_preallocate_oom_error): set
	error flag on the OOM error.

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	handle _dbus_transport_set_connection failure

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
	to create watches up front and simply enable/disable them as
	needed.
	(unix_connection_set): this can now fail on OOM

	* dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
	of enabling/disabling a watch or timeout.

	* bus/loop.c (bus_loop_iterate): don't touch disabled
	watches/timeouts

	* glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
2003-03-15 20:47:16 +00:00
Havoc Pennington
4c95a9782c 2003-03-14 Havoc Pennington <hp@redhat.com>
* dbus/dbus-memory.c: add a "detect buffer overwrites on free"
	cheesy hack

	* dbus/dbus-transport-debug.c: rework this a good bit to be
	less complicated. hopefully still works.

	* dbus/dbus-server-debug.c (handle_new_client): remove timeout
	manually

	* glib/dbus-gmain.c (timeout_handler): don't remove timeout
	after running it

	* dbus/dbus-message.c (dbus_message_copy): rename from
	dbus_message_new_from_message, fix it up to copy
	all the message fields, add test case

	* bus/dispatch.c (bus_dispatch_test): add some more test code,
	not quite passing yet
2003-03-15 02:19:02 +00:00
Havoc Pennington
3bea935316 2003-03-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
	out of memory

	* dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
	of memory

	* dbus/dbus-connection.h: Make AddWatchFunction and
	AddTimeoutFunction return a bool so they can fail on out-of-memory

	* bus/bus.c (bus_context_new): set up timeout handlers

	* bus/connection.c (bus_connections_setup_connection): set up
	timeout handlers

	* glib/dbus-gmain.c: adapt to the fact that set_functions stuff
	can fail

	* bus/bus.c (bus_context_new): adapt to changes

	* bus/connection.c: adapt to changes

	* test/watch.c: adapt to DBusWatch changes

	* bus/dispatch.c (bus_dispatch_test): started adding this but
	didn't finish
2003-03-14 01:27:58 +00:00
Alexander Larsson
89e6dfd29c 2003-02-26 Alexander Larsson <alexl@redhat.com>
* configure.in:
	Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0

	* dbus/dbus-connection.c:
	* dbus/dbus-connection.h:
	Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
	Add dbus_connection_set_wakeup_main_function and use it when queueing
	incoming and outgoing messages.


	* dbus/dbus-dataslot.c:
	Threadsafe usage of DBusDataSlotAllocator

	* dbus/dbus-message.c: (dbus_message_get_args_iter):
	dbus_new can fail.

	* dbus/dbus-server-unix.c:
	Add todo comment

	* glib/dbus-gmain.c:
	Implement the new wakeup functions for glib.

	* glib/Makefile.am:
	* glib/test-thread-client.c:
	* glib/test-thread-server.c:
	* glib/test-thread.h:
	Initial cut at some thread test code. Not really done yet.
2003-02-26 15:52:25 +00:00
Havoc Pennington
7265423411 2003-02-26 Havoc Pennington <hp@pobox.com>
* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply_and_block): fix crash
	where we ref'd the outgoing message instead of the returned reply

	* dbus/dbus-transport-unix.c (do_authentication): check read watch
	at the end of this function, so if we didn't need to read for
	authentication, we reinstall it for receiving messages

	* dbus/dbus-message.c (dbus_message_new_reply): allow replies to
	a NULL sender for peer-to-peer case

	* dbus/dbus-transport-unix.c (check_read_watch): handle
	!authenticated case correctly

	* glib/dbus-gmain.c: add support for DBusServer

	* dbus/dbus-server.c: add data slot support

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
	return values and handle errors

	* dbus/dbus-dataslot.c: factor out the data slot stuff from
	DBusConnection

	* Doxyfile.in (INPUT): add glib subdir

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
	setup_with_g_main instead of hookup_with_g_main; write docs
2003-02-26 06:42:57 +00:00
Anders Carlsson
bf07fc88a3 2003-02-16 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-auth.c: (client_try_next_mechanism):
	Plug a leak.

	* dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
	Return TRUE if there's no thread implementation around.

	* glib/dbus-gmain.c: (free_source),
	(dbus_connection_hookup_with_g_main):
	Make sure to remove the GSource when the connection is finalized.
2003-02-16 12:57:26 +00:00
Alexander Larsson
fe40189411 2003-02-15 Alexander Larsson <alexl@redhat.com>
* dbus/dbus-threads.c:
	* dbus/dbus-threads.h:
	Add condvars. Remove static mutext from API.
	Implement static mutexes by initializing them from threads_init.

	* glib/dbus-gthread.c:
	* qt/dbus-qthread.cpp:
	Update with the thread api changes.


	* dbus/dbus-list.c:
	* dbus/dbus-list.h:
	Turn StaticMutex into normal mutex + init function.
	Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
	_dbus_list_append_link, _dbus_list_prepend_link


	* dbus/dbus-sysdeps.c:
	* dbus/dbus-sysdeps.h:
	New type dbus_atomic_t, and new functions _dbus_atomic_inc,
	_dbus_atomic_dec. Only slow fallback implementation at the moment.

	* dbus/dbus-protocol.h:
	Add DBUS_MESSAGE_LOCAL_DISCONNECT define

	* dbus/dbus-message.c:
	Make ref/unref atomic.
	Fix some docs.

	* dbus/dbus-connection-internal.h:
	* dbus/dbus-connection.c:
	* dbus/dbus-connection.h:
	Make threadsafe.
	Change _peek to _borrow,_return & _steal_borrowed.
	Change disconnect callback to event.
	Make dbus_connection_dispatch_messages reentrant.

	* dbus/dbus-transport.c:
	Don't ref the connection on calls to the transport
	implementation.

	* dbus/dbus-message-handler.c:
	Make threadsafe.

	* glib/dbus-gmain.c:
	Don't use peek_message anymore

	* test/Makefile.am:
	* test/debug-thread.c:
	* test/debug-thread.h:
	Simple thread implementation that asserts() on deadlocks in
	single-threaded code.

	* test/bus-test.c:
	(main) Call debug_threads_init.

	* test/watch.c:
	Use disconnect message instead of disconnect callback.

	* bus/connection.c:
	* bus/connection.h:
	Don't call dbus_connection_set_disconnect_function. Instead export
	bus_connection_disconnect.

	* bus/dispatch.c:
	Call bus_connection_disconnect when we get a disconnected message.
2003-02-15 16:25:08 +00:00
Anders Carlsson
fef27dc10d 2003-02-13 Anders Carlsson <andersca@codefactory.se>
* glib/dbus-gmain.c: (timeout_handler), (add_timeout),
	(remove_timeout):
	Implement support for timeouts in dbus-glib.
2003-02-13 20:37:07 +00:00
Alexander Larsson
f023895590 2003-02-02 Alexander Larsson <alexl@redhat.com>
* dbus/dbus-watch.c (dbus_watch_get_flags):
	Add note in the docs that ERROR or HANGUP won't be returned
	and are assumed always on.

	* glib/dbus-gmain.c (add_watch):
	Always add IO_ERR | IO_HUP

	* dbus/dbus-message.h:
	Add semicolon after dbus_message_iter_get_string_array().
	Makes qt code build again
2003-02-01 22:02:27 +00:00
Richard Hult
5fbace5548 2003-01-26 Richard Hult <rhult@codefactory.se>
* glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
	the file descriptor list, since it can change under us.
2003-01-26 00:06:30 +00:00
Anders Carlsson
f7867d886d 2003-01-25 Anders Carlsson <andersca@codefactory.se>
* glib/dbus-gmain.c: (dbus_connection_prepare),
	(dbus_connection_check), (dbus_connection_dispatch), (add_watch),
	(remove_watch), (dbus_connection_hookup_with_g_main):
	Rewrite the glib handling to use its own GSource instead of a
	GIOChannel so we can catch messages put in the queue while waiting
	for a reply.
2003-01-25 21:22:57 +00:00
Anders Carlsson
a16e83f45d 2003-01-25 Anders Carlsson <andersca@codefactory.se>
* bus/connection.c: (bus_connection_foreach):
	* bus/connection.h:
	Add new bus_connection_foreach function.

	* bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
	Add function that broadcasts a message to all clients.

	(bus_driver_send_service_created), (bus_driver_handle_hello),
	(bus_driver_send_welcome_message),
	(bus_driver_handle_list_services), (bus_driver_message_handler):
	Implement functions that take care of listing services, and notifying
	clients when new services are created.

	* bus/services.c: (bus_services_list):
	* bus/services.h:
	Add new function that returns an array of strings with the currently
	registered services.

	* glib/dbus-glib.h:
	* glib/dbus-gmain.c:
	Update copyright year.
2003-01-24 23:51:59 +00:00
Anders Carlsson
4a85d321b4 2003-01-21 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-connection.c: (dbus_connection_send_message):
	Add a new client_serial parameter.

	(dbus_connection_send_message_with_reply):
	Remove a @todo since we've implemented the blocking function.

	(dbus_connection_send_message_with_reply_and_block):
	New function that sends a message and waits for a reply and
	then returns the reply.

	* dbus/dbus-connection.h:
	Add new functions.

	* dbus/dbus-errors.c: (dbus_result_to_string):
	* dbus/dbus-errors.h:
	Add new DBUS_RESULT.

	* dbus/dbus-message-internal.h:
	* dbus/dbus-message.c: (_dbus_message_get_reply_serial),
	(_dbus_message_set_sender), (dbus_message_write_header),
	(dbus_message_new_reply), (decode_header_data),
	(_dbus_message_loader_return_buffer), (_dbus_message_test):
	* dbus/dbus-message.h:
	Add new functions that set the reply serial and sender.
	Also marshal and demarshal them correctly and add test.

	* dbus/dbus-protocol.h:
	Add new DBUS_MESSAGE_TYPE_SENDER.

	* glib/dbus-glib.h:
	* glib/dbus-gmain.c: (watch_callback), (free_callback_data),
	(add_watch), (remove_watch), (add_timeout), (remove_timeout),
	(dbus_connection_hookup_with_g_main):
	* glib/test-dbus-glib.c: (main):
	Rewrite to use GIOChannel and remove the GSource crack.

	* test/echo-client.c: (main):
	* test/watch.c: (check_messages):
	Update for changed APIs
2003-01-21 09:23:18 +00:00
Havoc Pennington
17fbe2b702 2002-12-24 Havoc Pennington <hp@pobox.com>
* glib/dbus-gthread.c: fix include

	* glib/dbus-glib.h: rename DBusMessageHandler for now.
	I think glib API needs to change, though, as you don't
	want to use DBusMessageFunction, you want to use the
	DBusMessageHandler object. Probably
	dbus_connection_open_with_g_main_loop()
	and dbus_connection_setup_g_main_loop() or something like that
	(but think of better names...) that just create a connection
	that has watch/timeout functions etc. already set up.

	* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply): new function just to
	show how the message handler helps us deal with replies.

	* dbus/dbus-list.c (_dbus_list_remove_last): new function

	* dbus/dbus-string.c (_dbus_string_test): free a string that
	wasn't

	* dbus/dbus-hash.c: use memory pools for the hash entries
	(rebuild_table): be more paranoid about overflow, and
	shrink table when we can
	(_dbus_hash_test): reduce number of sprintfs and write
	valid C89. Add tests for case where we grow and then
	shrink the hash table.

	* dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools

	* dbus/dbus-connection.c (dbus_connection_register_handler)
	(dbus_connection_unregister_handler): new functions

	* dbus/dbus-message.c (dbus_message_get_name): new

	* dbus/dbus-list.c: fix docs typo

	* dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
	an object representing a handler for messages.
2002-12-24 06:37:33 +00:00
Anders Carlsson
c531a709f3 2002-12-16 Anders Carlsson <andersca@codefactory.se>
* Makefile.am:
	* configure.in:
	Add GLib checks and fixup .pc files

	* glib/Makefile.am:
	* glib/dbus-glib.h:
	* glib/dbus-gmain.c: (gdbus_connection_prepare),
	(gdbus_connection_check), (gdbus_connection_dispatch),
	(gdbus_add_connection_watch), (gdbus_remove_connection_watch),
	(dbus_connection_gsource_new):
	* glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
	(dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
	* glib/test-dbus-glib.c: (message_handler), (main):
	Add GLib support.
2002-12-16 00:26:05 +00:00