From 1b53cbcce333381754b0568b740ece550a8f6ac9 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Tue, 7 Jan 2003 20:18:23 +0000 Subject: 2003-01-07 Anders Carlsson * dbus/dbus-connection-internal.h: * dbus/dbus-connection.c: (_dbus_connection_new_for_transport), (_dbus_connection_get_next_client_serial), (dbus_connection_send_message): * dbus/dbus-internals.h: * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32), (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32), (_dbus_marshal_uint32), (_dbus_demarshal_double), (_dbus_demarshal_int32), (_dbus_demarshal_uint32), (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos), (_dbus_verbose_bytes), (_dbus_marshal_test): * dbus/dbus-marshal.h: * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_set_client_serial), (dbus_message_write_header), (_dbus_message_lock), (dbus_message_new), (dbus_message_ref), (dbus_message_unref), (dbus_message_get_name), (dbus_message_append_int32), (dbus_message_append_uint32), (dbus_message_append_double), (dbus_message_append_string), (dbus_message_append_byte_array), (dbus_message_get_fields_iter), (dbus_message_iter_ref), (dbus_message_iter_unref), (dbus_message_iter_has_next), (dbus_message_iter_next), (dbus_message_iter_get_field_type), (dbus_message_iter_get_string), (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32), (dbus_message_iter_get_double), (decode_header_data), (_dbus_message_loader_return_buffer), (message_iter_test), (_dbus_message_test): * dbus/dbus-message.h: * dbus/dbus-protocol.h: * dbus/dbus-test.c: (main): * dbus/dbus-test.h: * glib/test-dbus-glib.c: (message_handler), (main): * test/echo-client.c: (main): * test/watch.c: (check_messages): Make messages sendable and receivable for real. --- dbus/dbus-connection.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'dbus/dbus-connection.c') diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 66bd0645..8efa0014 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -92,6 +92,8 @@ struct DBusConnection int handlers_serial; /**< Increments when the handler table is changed. */ DBusDataSlot *data_slots; /**< Data slots */ int n_slots; /**< Slots allocated so far. */ + + int client_serial; /**< Client serial. Increments each time a message is sent */ }; static void _dbus_connection_free_data_slots (DBusConnection *connection); @@ -330,6 +332,7 @@ _dbus_connection_new_for_transport (DBusTransport *transport) connection->data_slots = NULL; connection->n_slots = 0; + connection->client_serial = 1; _dbus_transport_ref (transport); _dbus_transport_set_connection (transport, connection); @@ -350,6 +353,19 @@ _dbus_connection_new_for_transport (DBusTransport *transport) return NULL; } +static dbus_int32_t +_dbus_connection_get_next_client_serial (DBusConnection *connection) +{ + int serial; + + serial = connection->client_serial++; + + if (connection->client_serial < 0) + connection->client_serial = 1; + + return serial; +} + /** * Used to notify a connection when a DBusMessageHandler is * destroyed, so the connection can drop any reference @@ -580,7 +596,8 @@ dbus_connection_send_message (DBusConnection *connection, _dbus_verbose ("Message %p added to outgoing queue, %d pending to send\n", message, connection->n_outgoing); - + + _dbus_message_set_client_serial (message, _dbus_connection_get_next_client_serial (connection)); _dbus_message_lock (message); if (connection->n_outgoing == 1) -- cgit