diff options
| author | Havoc Pennington <hp@redhat.com> | 2003-02-27 05:12:39 +0000 | 
|---|---|---|
| committer | Havoc Pennington <hp@redhat.com> | 2003-02-27 05:12:39 +0000 | 
| commit | ff190005e5e518c1d78fd83b0da3642280ead84c (patch) | |
| tree | 730cafef9a98ed8e4a964b879ee35e8acbec6018 | |
| parent | 13f70ce711630d7f70c0b11fa57639fad95e4afd (diff) | |
2003-02-27  Havoc Pennington  <hp@pobox.com>
	* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply_and_block): fix doh!
	doh! doh! bug that resulted in never removing a reply from the
	queue, no wonder we called get_reply_serial so much ;-)
	* dbus/dbus-message.c (struct DBusMessage): cache reply serial
	and client serial instead of demarshaling them every time
| -rw-r--r-- | ChangeLog | 10 | ||||
| -rw-r--r-- | dbus/dbus-connection.c | 2 | ||||
| -rw-r--r-- | dbus/dbus-message.c | 29 | 
3 files changed, 35 insertions, 6 deletions
| @@ -1,5 +1,15 @@  2003-02-27  Havoc Pennington  <hp@pobox.com> +	* dbus/dbus-connection.c +	(dbus_connection_send_message_with_reply_and_block): fix doh! +	doh! doh! bug that resulted in never removing a reply from the +	queue, no wonder we called get_reply_serial so much ;-) +	 +	* dbus/dbus-message.c (struct DBusMessage): cache reply serial +	and client serial instead of demarshaling them every time + +2003-02-27  Havoc Pennington  <hp@pobox.com> +  	* dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much  	more inlined, using dbus-string-private.h, speeds things up   	substantially diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 4990cff3..134736d2 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -1320,7 +1320,7 @@ dbus_connection_send_message_with_reply_and_block (DBusConnection     *connectio        if (_dbus_message_get_reply_serial (reply) == client_serial)  	{ -	  _dbus_list_remove (&connection->incoming_messages, link); +	  _dbus_list_remove_link (&connection->incoming_messages, link);  	  dbus_message_ref (reply);  	  if (result) diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index 1a112a79..09ebeef8 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -91,6 +91,10 @@ struct DBusMessage    HeaderField header_fields[FIELD_LAST]; /**< Track the location                                             * of each field in "header"                                             */ + +  dbus_int32_t client_serial; /**< Cached client serial value for speed */ +  dbus_int32_t reply_serial;  /**< Cached reply serial value for speed */ +      int header_padding; /**< bytes of alignment in header */    DBusString body;   /**< Body network data. */ @@ -528,9 +532,10 @@ _dbus_message_set_client_serial (DBusMessage  *message,  {    _dbus_assert (!message->locked);    _dbus_assert (_dbus_message_get_client_serial (message) < 0); - +      set_int_field (message, FIELD_CLIENT_SERIAL,                   client_serial); +  message->client_serial = client_serial;  }  /** @@ -547,8 +552,14 @@ _dbus_message_set_reply_serial (DBusMessage  *message,  {    _dbus_assert (!message->locked); -  return set_int_field (message, FIELD_REPLY_SERIAL, -                        reply_serial); +  if (set_int_field (message, FIELD_REPLY_SERIAL, +                     reply_serial)) +    { +      message->reply_serial = reply_serial; +      return TRUE; +    } +  else +    return FALSE;  }  /** @@ -566,7 +577,7 @@ _dbus_message_set_reply_serial (DBusMessage  *message,  dbus_int32_t  _dbus_message_get_client_serial (DBusMessage *message)  { -  return get_int_field (message, FIELD_CLIENT_SERIAL); +  return message->client_serial;  }  /** @@ -579,7 +590,7 @@ _dbus_message_get_client_serial (DBusMessage *message)  dbus_int32_t  _dbus_message_get_reply_serial  (DBusMessage *message)  { -  return get_int_field (message, FIELD_REPLY_SERIAL); +  return message->reply_serial;  }  /** @@ -728,6 +739,8 @@ dbus_message_new_empty_header (void)    message->refcount = 1;    message->byte_order = DBUS_COMPILER_BYTE_ORDER; +  message->client_serial = -1; +  message->reply_serial = -1;    i = 0;    while (i < FIELD_LAST) @@ -2722,6 +2735,12 @@ _dbus_message_loader_return_buffer (DBusMessageLoader  *loader,            _dbus_assert (_dbus_string_get_length (&message->header) == header_len);            _dbus_assert (_dbus_string_get_length (&message->body) == body_len); +          /* Fill in caches */ +          message->reply_serial = get_int_field (message, +                                                 FIELD_REPLY_SERIAL); +          message->client_serial = get_int_field (message, +                                                  FIELD_CLIENT_SERIAL); +            	  _dbus_verbose ("Loaded message %p\n", message);  	}        else | 
