diff options
author | Anders Carlsson <andersca@codefactory.se> | 2003-01-07 20:18:23 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@codefactory.se> | 2003-01-07 20:18:23 +0000 |
commit | 1b53cbcce333381754b0568b740ece550a8f6ac9 (patch) | |
tree | da5534fdd15eb6526d4bc362b556843835bf1d72 /dbus/dbus-connection.c | |
parent | 49686ee969ee377c19f82be12dd03b538bbd2871 (diff) |
2003-01-07 Anders Carlsson <andersca@codefactory.se>
* 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.
Diffstat (limited to 'dbus/dbus-connection.c')
-rw-r--r-- | dbus/dbus-connection.c | 19 |
1 files changed, 18 insertions, 1 deletions
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) |