summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-connection.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-01-07 20:18:23 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-01-07 20:18:23 +0000
commit1b53cbcce333381754b0568b740ece550a8f6ac9 (patch)
treeda5534fdd15eb6526d4bc362b556843835bf1d72 /dbus/dbus-connection.c
parent49686ee969ee377c19f82be12dd03b538bbd2871 (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.c19
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)